1. 在ssh客户端,生成公钥和私钥
- 在ssh客户端,查看是否已经有了ssh密钥
$ cd ~/.ssh
如果没有密钥,则不会有此文件夹;有则备份,并删除原文件夹。
- 生成公钥,私钥
$ ssh-keygen -t rsa
一直按3个回车。系统会默认在 ~/.ssh目录生成两个文件: id_rsa(私钥),id_rsa.pub(公钥)。
$ cd ~/.ssh
$ ll
-rw------- 1 jack jack 1675 Jul 12 01:33 id_rsa
-rw-r--r-- 1 jack jack 410 Jul 12 01:33 id_rsa.pub
现在,设置你的私钥权限。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
2. 在ssh服务端
2.1 在ssh服务端,修改配置文件
# vim /etc/ssh/sshd_config
找到以下内容,去掉注释符“#”。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
注:如果多用户免密登录远程主机,需要设置
PasswordAuthentication no
;如果只有一个人能登录的远程主机,出现问题,就只能重装系统,因此就不建议设置PasswordAuthentication no
。
重启sshd服务
# service sshd restart
2.2 在ssh服务端,导入公钥到服务器端认证文件,更改权限
- 复制私钥到远程主机。
$ ssh-copy-id user@host
或者手动把公钥复制到远程主机,添加到authorized_keys
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
添加完,就可以删除公钥id_rsa.pub。
- 在ssh服务端,修改相关文件目录权限。
$ chmod 700 /home/jack
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
3. ssh客户端、服务端需要保留的文件
- ssh客户端保留的文件
id_rsa,私钥,必要
id_rsa.pub,公钥,必要,留待以后添加到其他远程主机
known_hosts,记录本机ssh免密登陆的远程主机列表,可选
- ssh服务端保留的文件
authorized_keys,客户端主机的公钥列表
4. 测试
本地主机ssh远程服务器。
# ssh -v -p port user@远程服务器IP