以 a 登录 b为例
ssh -v
若无安装,先安装ssh
ssh-keygen -t rsa
此时在/home/当前用户/.ssh下会生成公私钥文件
公钥 id_rsa.pub
私钥 id_rsa
用ssh-copy-id将公钥复制到远程机器中
在 a 机器上执行
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名字@192.168.x.xxx
注意: ssh-copy-id 将key写到远程机器的 ~/.ssh/authorized_keys
文件中
authorized_keys 文件必须是600权限(也就是-rw——-)或者644
.ssh目录必须是700权限(也就是drwx——)
/home/work目录 必须是 755权限 即drwxr-xr-x
第一次测试,会提示一个确认,选择yes回车,结果不用输入密码,登录成功!
#在root权限下执行
vim /etc/ssh/sshd_config
1、配置允许公钥认证
找到以下几句,若没有不需要处理
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
去掉上面3行前面的#
2、禁止密码登录,禁止root账户登录
找到下面2行:
PasswordAuthentication yes
PermitRootLogin yes
# 修改为:
PasswordAuthentication no
PermitRootLogin no
3、添加允许登录的用户限制
AllowUsers deploy@(your-ip) deploy@(another-ip-if-any)
service sshd restart
在以上基础上,修改ssh的端口会更安全
从 Ubuntu 22.04.1 LTS 开始,可能存在 /etc/ssh/sshd_config.d/50-cloud-init.conf
这个配置文件, 其中有一条配置 PasswordAuthentication yes
,该配置文件会将 sshd_config
覆盖掉,导致 /etc/ssh/sshd_config
配置中的禁止密码登录无效。因此需要在 /etc/ssh/sshd_config.d/50-cloud-init.conf
文件中删除这一行配置。
/etc/ssh/sshd_config
中的参数是以第一个出现的为准,在文件开头 Include /etc/ssh/sshd_config.d/*.conf
所以后面再配置的 PasswordAuthentication
参数才无效了。