每次登录远程主机使用密码难免有点烦人,在此介绍一种方式,可使用ssh密钥进行免密码登录。
ssh密钥生成ssh-keygen:此命令用于生成密钥。
常用到的命令选项如下:
- -t:用于指定密钥类型,rsa或者dsa,一般使用rsa;
- -b:指定密钥长度;
- -e:读取openssh的私钥或者公钥文件;
- -C:添加注释;
- -f:指定用来保存密钥的文件名;
- -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
- -l:显示公钥文件的指纹数据;
- -N:提供一个新密语;
- -P:提供(旧)密语;
- -q:静默模式。
Demo:
ssh-keygen -t rsa -P abcdefg -f demo -C 'just a demo key'
上面的语句,意思为:创建一个密语为abcdefg,注释为just a demo key,名为demo的密钥,会有两个文件生成,demo(私钥)和demo.pub(公钥)。若要进行免密登录,需将密语设置为空。
将公钥文件部署到远程主机命令如下:
# 本地执行: # 将公钥文件上传至服务器tmp目录下 scp ~/.ssh/demo.pub root@10.211.55.5:/tmp # 服务器执行: # 将公钥内容追加至authorized_keys文件中,并修改其权限为600 mkdir -p ~/.ssh cat /tmp/demo.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
至此,即可实现免密码登录,命令:ssh root@10.211.55.5
本地配置(可选)vi ~/.ssh/config # 请求配置 ServerAliveInterval 30 # 该选项表示客户端每隔30秒会向服务器发送一个请求,不执行任何操作,确保主机不会因为闲置断开连接 # 主机配置,Host表示别名,HostName输入IP,User即登录用户名,IdentityFile则是上传至服务器的公钥所对应的私钥路径。 Host demo-root HostName 10.211.55.5 User root IdentityFile ~/.ssh/demo
如上配置,则可实现别名登录,免去记忆服务器IP的麻烦。
命令:ssh demo-root