本文所有命令是在Ubuntu中测试的,可能有些命令不适用于其他版本的Linux。
SSH客户端如何连接SSH服务端
ssh -p [服务器端口号] [服务器登录账号]@[服务器IP或域名]编写一个登录脚本connect_ssh_server.sh(需输入密码)
#!/usr/bin/expect -fset host <你的SSH服务器 主机名或IP>set port <你的SSH服务器 端口>set user <你的SSH服务器 登录账号>set password <你的SSH服务器 登录密码>set timeout -1spawn ssh -o StrictHostKeyChecking=no -p $port $user@$hostexpect "*assword:*"send "$password\r"interact
expect eof编写一个登录脚本connect_ssh_server.sh(不需要输入密码,SSH无密码自动登录)
#!/usr/bin/expect -fset host <你的SSH服务器 主机名或IP>set port <你的SSH服务器 端口>set user <你的SSH服务器 登录账号>set timeout -1spawn ssh -o StrictHostKeyChecking=no -p $port $user@$hostinteract
expect eof执行connect_ssh_server.sh这个脚本时可能会遇到问题,解决方法如下
# 执行以下命令后,连接成功./connect_ssh_server.sh# 执行以下命令后,连接失败
sh connect_ssh_server.sh# 执行以下命令后,连接失败
. connect_ssh_server.shspawn ssh遇到的问题
如何实现SSH客户端无密码自动登录SSH服务器(也可用于实现git提交代码时无密码提交)
第一步:(客户端) 在SSH客户端执行以下操作
$ ssh-keygen -t rsa$ cat ~/.ssh/id_rsa.pub# 将id_rsa.pub上传到SSH服务器的helper账号的家目录$ scp -P 22 ~/.ssh/id_rsa.pub helper@m.xyz.com:/home/helper第二步:(服务端) 在SSH服务端执行以下操作(以helper账号登录SSH服务器)
# 查看客户端上传的id_rsa.pub是否存在helper@hgdm:~$ ls -l | grep id_rsa.pub-rw-rw-r-- 1 helper helper 0 Apr 7 11:23 id_rsa.pub# 将客户端的key追加到~/.ssh/authorized_keys的最后面helper@hgdm:~$ cat id_rsa.pub >> ~/.ssh/authorized_keys# 必须把~/.ssh的权限设置为700,否则大概率遭遇失败helper@hgdm:~$ chmod 700 ~/.ssh# 必须把~/.ssh/authorized_keys的权限设置为600,否则大概率遭遇失败helper@hgdm:~$ chmod 600 ~/.ssh/authorized_keys第三步:(客户端) 执行ssh命令连接SSH服务器,检查是否实现了无密码登录。
ssh -p 22 helper@m.xyz.com如何通过SSH上传文件和下载文件 (使用scp命令)
把文件从本地电脑上传到SSH服务器(scp 本地路径 服务器路径)
scp -P <SSH服务器端口号> <本地电脑某个待上传的文件路径> <SSH服务器登录账号>@<SSH服务器主机名或IP>:<SSH服务器上的某个目录(用于存放本地电脑上传的文件)># 例如
scp -P 22 /home/decisionmaker/examples/test_upload.tar.xz helper@m.xyz.com:/home/helper/examples
# 如果上传的是目录而不是文件,scp命令需要加上-r选项把文件从SSH服务器下载到本地电脑(scp 服务器路径 本地路径)
scp -P <SSH服务器端口号> <SSH服务器登录账号>@<SSH服务器主机名或IP>:<SSH服务器上的某个待下载的文件路径> <本地电脑的某个目录(用于存放从SSH服务器下载的文件)># 例如
scp -P 22 helper@m.xyz.com:/home/helper/examples/test_download.zip /home/decisionmaker/examples
# 如果下载的是目录而不是文件,scp命令需要加上-r选项在SSH客户端执行scp命令 上传文件
在SSH客户端执行scp命令 下载文件
如何修改SSH服务的端口和禁用root登录
执行下面的两个步骤
# 第一步sudo vi /etc/ssh/sshd_config# 禁用root登录: 把PermitRootLogin由yes改为no
PermitRootLogin no# 修改端口: 把Port由22改为其他端口,如11927
Port 11927# 第二步 重启sshd服务
sudo systemctl restart sshd.service安装、启动、停止、重启、开机自启、查看SSH服务
查看SSH服务是否已安装
# 方法1decisionmaker@tdar-srv:~$ dpkg -l | cut -d " " -f3 | grep opensshopenssh-client
openssh-server
openssh-sftp-server
# 方法2decisionmaker@tdar-srv:~$ apt list openssh-* --installedListing... Done
openssh-client/focal-updates,now 1:8.2p1-4ubuntu0.4 amd64 [installed]openssh-server/focal-updates,now 1:8.2p1-4ubuntu0.4 amd64 [installed]openssh-sftp-server/focal-updates,now 1:8.2p1-4ubuntu0.4 amd64 [installed,automatic]安装SSH服务
sudo apt update# 安装ssh服务端sudo apt install openssh-server# 安装ssh客户端sudo apt install openssh-client启动、停止、重启、开机自动启动SSH服务
# 激活sshd服务 开机自启(开机时自动启动)sudo systemctl enable sshd# 禁用sshd服务 开机自启
sudo systemctl disable sshd# 查看sshd服务 是否激活了开机自启
sudo systemctl is-enabled sshd# 启动sshd服务
sudo systemctl start sshd# 停止sshd服务
sudo systemctl stop sshd# 直接kill掉sshd服务,慎用这个命令,一般用systemctl stop停止服务
sudo systemctl kill sshd# 重启sshd服务
sudo systemctl restart sshd# 查看sshd服务的状态(是启动了,还是停止了)
sudo systemctl status sshd查看SSH配置文件的位置
ssh服务端的配置文件通常位于: /etc/ssh/sshd_config和/etc/ssh/sshd_config.d。
ssh客户端的配置文件通常位于: /etc/ssh/ssh_config和/etc/ssh/ssh_config.d。
若是实在找不到配置文件,则根据关键词sshd_config或ssh_config查找:
root@tdar-srv:~# apt install mlocate# 找到sshd_config的位置root@tdar-srv:~# locate sshd_config# 找到ssh_config的位置root@tdar-srv:~# locate ssh_config
评论列表