创建并拷贝RSA密钥(服务器用户读这段)
密钥对是从client机器产生的,然后把public key交给server;不同的clients想要连接server,那就会让server机器拥有很多条public key。
检查是否已存在公私钥对
在mac上打开terminal。更改目录到~/.ssh目录。list当前目录可以看到所有公私钥文件。拥有.pub结尾的文件是公钥文件,无.pub的是私钥文件。
如果之前没创建过私钥,先执行第一步再执行第二步;如果创建过,直接执行第二步
第一步:创建RSA密钥
在client机器上执行 ssh-keygen -t rsa
,会产生一个密钥。
随后终端提示要求提供rsa的存储位置,不选则默认为/home/client_username/.ssh/id_rsa
。
随后终端提示要求提供passphrase,最好设置一个强一点的,可以不设置
第二步:拷贝RSA密钥到服务器
ssh-copy-id server_username@server_ip
,把这台client的密钥复制到server即可
如果有多台server,第一步只需要做一次(密钥只需要生成一次),第二步需要对每台服务器做一次(拷贝到每台服务器上)。随后就可以通过密钥登录了。
通过密钥登陆
登录的过程是人输入passphrase之后跟client(本地)密钥文件计算出passward,然后在server上校验的过程。
第一次登录可能会要求之前的password,之后再登录就只需要输入passphrase。
禁止用户使用密码登录(管理员读这段)
root下修改/etc/ssh/sshd_config
,密码登录(PasswordAuthentication
)那一行注释掉
然后来到文件的最后,加上
Match User username1,username2
PasswordAuthentication no
来禁止某些用户密码登录。
随后root下systemctl restart sshd
重启服务。
以上一定要严格执行,否则最后一步restart无法成功。
以上参考 https://ostechnix.com/disable-ssh-password-authentication-for-specific-user-or-group/
注意,禁用某个用户的密码登录之后,如果用户想要加入新的client,还要开放一下,否则密钥给不过去。