使用ssh公钥实现ssh免密码登录

密匙认证需要依靠密匙,首先创建一对密匙(包括公匙和密匙,并且用公匙加密的数据只能用密匙解密),并把公匙放到需要远程服务器上。这样当登录远程服务器时,客户端软件就会向服务器发出请求,请求用你的密匙进行认证。服务器收到请求之后,先在你在该服务器的宿主目录下寻找你的公匙,然后检查该公匙是否是合法,如果合法就用公匙加密一随机数(即所谓的challenge)并发送给客户端软件。客户端软件收到 “challenge”之后就用私匙解密再把它发送给服务器。因为用公匙加密的数据只能用密匙解密,服务器经过比较就可以知道该客户连接的合法性。

客户机:192.168.167.231

远端主机:192.168.165.5

1、在客户机以root用户执行下述命令:

/usr/bin/ssh-keygen -t rsa

ssh-keygen -t rsa

然后一路按回车键

说明:

该命令将在用户的主目录/.ssh目录下面产生一对密钥

一般采用的ssh的rsa密钥: 

id_rsa     私钥

id_rsa.pub 公钥

下述命令产生不同类型的密钥

ssh-keygen -t dsa 

ssh-keygen -t rsa 

ssh-keygen -t rsa1 

2、再执行如下命令,将公钥拷贝到远端主机,并写入授权列表文件

scp /home/Administrator/.ssh/id_rsa.pub [email protected]:/home/bmp/.ssh/authorized_keys

然后根据提示输入“yes”,一定要是“yes”,不能是“y”

说明:

/home/Administrator/.ssh/id_rsa.pub为本地的公钥

bmp为远端主机的用户名

192.168.165.5为远端主机的IP地址

/home/bmp/.ssh/authorized_keys为远端主机的授权列表文件

也可以把公钥文件拷贝过去后,在远端主机下直接执行

touch /home/bmp/.ssh/authorized_keys

cat /home/Administrator/.ssh/id_rsa.pub >> /home/bmp/.ssh/authorized_keys

还可以执行如下命令,复制SSH密钥到目标主机,开启无密码SSH登录:

ssh-copy-id -i /home/Administrator/.ssh/id_dsa.pub [email protected]

3、登陆检查

ssh [email protected]

若采用远端主机的root用户进行登录,则调整为:

ssh 192.168.165.5 

请注意此时如果仍提示输入密码,请检查如下文件夹和文件的操作权限,这是非常重要的, 否则ssh公钥认证体制不能正常工作:

192.168.167.231(客户端)

/home/Administrator文件夹的权限是600

/home/Administrator/.ssh文件夹的权限是600 (好像这个权限关系不是很大)

/home/Administrator/.ssh/id_dsa私钥的权限600

192.168.165.5(远端主机)

/home/bmp文件夹的权限是644

/home/bmp/.ssh文件夹的权限是644 (好像这个权限关系不是很大)

/home/bmp/.ssh/authorized_keys公钥的权限644

你可能感兴趣的:(Linux,ssh,shell,linux)