实现原理
使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是
- 首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)
- 然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥
- 当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了
1、在客户端机器上执行"ssh-keygen -t rsa"
(
注:每次执行
"ssh-keygen -t rsa"
产生的私钥文件都会不同
)
a
)如果文件
"~/.ssh/id_rsa"
存在,会提示是否覆盖该文件,此时可选择
"n"
不覆盖该文件而使用已有的
id_rsa
文件;如果选择
"y"
则会重新生成
"~/.ssh/id_rsa"
文件,接下来会提示输入
passphrase
,回车确定使用空的
passphrase
,再次回车确认(这里也可以输出
passphrase
,相当于
ssh
时登录的密码)。然后会重新生成
"~/.ssh/id_rsa"
文件和
"~/.ssh/id_rsa.pub"
文件(结果如下)。
b)如果"~/.ssh/id_rsa"文件和"~/.ssh/id_rsa.pub"文件不存在则会自动创建新的"~/.ssh/id_rsa"文件和"~/.ssh/id_rsa.pub"文件,passphrase设置同上。
2
、使用
ssh zhangsan@192.168.1.1
登录到服务器,编辑服务器上
"~/.ssh/authorized_keys"
文件,将客户端机器上的
"~/.ssh/id_rsa.pub"
文件内容追加到
"~/.ssh/authorized_keys"
文件中。
(注:可以在客户端机器上使用以下命令来实现:
cat ~/.ssh/id_rsa.pub | ssh zhangsan@服务器ip "cat - >> ~/.ssh/authorized_keys"
此时会要求输入zhangsan
在服务器上的登录密码,输入后即会将客户端机器上的
"~/.ssh/id_rsa.pub"
文件内容追加到服务器上的
"~/.ssh/authorized_keys"
文件中)
如果是首次连接服务器会出现以下的提示,确认连接并输入密码后其他直接回车确定。
3
、如果在第
1
步中
使用了空的passphrase
,则可以跳过第
4
步,此时在客户端即可以使用
"ssh zhangsan@192.168.1.1"
即可无密码登录到服务器;如果第一步中设置了
passphrase
,则继续执行以下步骤。
4
、
如果第
1
步中设置了
passphrase
,则此时需要输入该
passphrase
登录服务器。
此时
前面我们把输入密码变成了输入passphrase
,
这没有带来任何方便
。
但是
我们可以通过
ssh-agent
来帮助我们自动输入
passphrase(只是看起来像是自动输入而已)
,
我们只要
在第一次登录时
输入一次passphrase, 以后的工作就可以交给ssh-agent
。在客户端机器上执行命令
ssh-add
,
这里会提示输入一次passphrase
。输入第一步中设置的
passphrase
之后会修改
"~/
.ssh
/
id_rsa
"
文件。再在客户端执行
"ssh zhangsan@192.168.1.1"
即可无密码登录到服务器端。
5、使用ssh-add时,如果出现‘WARNING: UNPROTECTED PRIVATE KEY FILE’, 如下:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/home/kejuwangkj/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
=》 解决方案如下:
To fix this, you'll need to reset the permissions back to default:
If you are getting another error:
This means that the permissions on that file are also set incorrectly, and can be adjusted with this:
Finally, you may need to adjust the directory permissions as well:
This should get you back up and running.
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/247958,如需转载请自行联系原作者