(ssh:secure shell, protocol, 22/tcp,安全的远程登陆)
shell
SSH相关的安装包:安全
openssh-clients.x86_64 SSH的客户端安装包bash
openssh-server.x86_64 SSH的服务器端安装包服务器
openssh.x86_64 SSh的通用设置,服务于服务器端和客户端ssh
基于密钥的认证:tcp
一、使用到的命令:ide
a) ssh-keygen 生成ssh认证的私钥和公钥加密
b) ssh-copy-id 将ssh认证的公钥从客户端拷贝到服务器端生成authorized_keys文件,该文件中存放公钥。spa
二、客户端的操做:代理
a) 生成密钥对:
非交互式:ssh-keygen –t rsa [-P ' ' ] [-f "~/.ssh/id_rsa"]
-t:指定加密的方式
-P:指定加密的密码
-f:指定生成的私钥地址
(该方式生成的私钥在用于认证的时候须要输入指定的密码)
交互式:ssh-keygen (直接回车就能够了)
(该方式会进行各类确认,提示是否生成相应的文件。)
b) 把公钥文件传输至远程服务器对应用户的家目录:
ssh-copy-id [-i [identity_file]][user@]host
例如:ssh-copy-id root@172.17.254.244
会自动生成authorized_keys文件,这里是存放的id_rsa.pub文件中的公钥。
三、设置代理ssh-agent
若是密钥设置了密码,每次输入都很麻烦,这时候能够用ssh-agent代理,只要输入一次口令,以后均可以用。退出会话以后就失效。
ssh-agent bash 启动代理
ssh-add 添加代理密码(这个是交互式命令,若是私钥有密码,会自动提示输入密码。)
四、实现多台客户端的免密登陆
以上介绍的都是两台机器之间的免密登陆,每台机器对应家目录下的.ssh/目录下只有一个authorized_keys文件,如何实现同一台服务器能够多台客户端免密登陆呢?
根据以前咱们介绍的,在authorized_keys这个文件中存放的是客户端ssh认证的公钥,因此咱们能够参考其中的格式,将客户端ssh认证的公钥所有存放到其中便可。
固然,咱们就不能重复使用ssh-copy-id这个命令了,不然将会形成覆盖,达不到预期的效果。
a) 将客户端对应家目录中.ssh/目录下生成的id_rsa.pub文件拷贝到服务器端
scp ~/.ssh/id_rsa.pub 172.17.253.23
b) 将从客户端拷贝过来的公钥内容,添加到authorized_keys文件中,具体作法以下:
cat id_rsa.pub >> ~/.ssh/authorized_keys
c)只要将每一台客户端的公钥都添加到服务器端authorized_keys文件中,就能够实现多台客户端同时免密登陆服务器了。