本文分为三种情况:
- 平常服务器之间的免密访问
- 分享给别人密钥,使用密钥登录服务器
- sftp使用密钥登录
一、服务器之间的免密登录
经常用于服务器之间脚本传输文件避免明文密码,一些软件集群之间的信任等。
A机器登录B机器无需输入密码:
- 登录A机器,使用需要免密的用户登录
ssh-keygen -t rsa
将会生成密钥文件和私钥文件: id_rsa、id_rsa.pub
2. 将 .pub 文件复制到B机器的 ~/.ssh 目录, 并
cat id_rsa.pub >> ~/.ssh/authorized_keys
- 完成,从A机器登录B机器的目标账户,不再需要密码了;
(直接运行 #ssh user@目标ip )
备注:
客户机器A的~/.ssh/id_rsa文件权限最好限制为700、
服务器端B机器~/.ssh/authorized_keys权限最好限制为400
最后登录时注意登录的用户是否与操作用户对应。
相互登录,把A/B机操作对调一下就可以了
使用密钥文件登录指定服务器
- 使用需要免密的用户登录目标服务器
ssh-keygen -t rsa
将会生成密钥文件和私钥文件: id_rsa、id_rsa.pub
2. 将 .pub 文件复制 ~/.ssh 目录, 并
cat id_rsa.pub >> ~/.ssh/authorized_keys
- 下载 id_rsa。使用此密钥文件即可免密登录目标服务器
sftp密钥登录
- 使用需要免密的用户登录目标服务器
ssh-keygen -t rsa
将会生成密钥文件和私钥文件: id_rsa、id_rsa.pub
2. 将 .pub 文件复制 ~/.ssh 目录, 并
cat id_rsa.pub >> ~/.ssh/authorized_keys
- 修改ssh配置文件
vi /etc/ssh/sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
- 重启ssh服务
- 下载 id_rsa。使用此密钥文件即可免密登录目标服务器
sftp -oIdentityFile=私钥地址 用户名@ip
备注:
SFTP 其实就是SSH File Transfer Protocol,所以与ssh密钥登录并无二致。
当然密钥登录还有许多参数和功能,本文只是最简单的实现功能。