每次在终端使用SSH访问服务器都需要输入密码,非常麻烦,有没有办法不输密码也可以访问呢?答案是肯定的。
服务器IP:192.168.1.200 用户:server
客户端IP:192.168.1.100 用户:local
生成私钥公钥
首先,使用ssh-keygen来生成私钥和公钥
ssh-keygen -t rsa
这样会生成一对密钥,存放在local用户的~/.ssh目录下。
上传公钥
将公钥上传到server的用户目录下
local:
scp ~/.ssh/id_rsa.pub server@192.168.1.200:
写入公钥
将id_rsa.pub文件写入到~/.ssh/authorized_keys
server:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
检查.ssh目录必须是700,authorized_keys必须是644,并且拥有者是当前用户。
现在,使用 SSH、SFTP、SCP等功能,不用再输入密码了。
补充:使用ssh-copy-id上传并写入公私
上面的生成公钥后,执行2个步骤,先将公私拷贝到服务器,再从服务器上写入到authorized_keys。这里还有一个更简单的方法将后面2步合为1步完成。
使用ssh-copy-id
命令,使用Mac的小伙伴如果发现命令不存在,可以先使用brew安装。
brew install ssh-copy-id
命令安装完成后,直接上传并写入公钥
ssh-copy-id -i ~/.ssh/id_rsa.pub server@192.168.1.200
完成后,看看是不是同样不需要密码就可以登陆啦?