下面在目标服务器上进行操作:
# 生成密钥对 方法很多,xshell生成都行,生成的文件名不要改
ssh-keygen -t rsa
# 生成后查看并配置密钥对
cd ~/.ssh/
ls
# 可以看有两个文件 id_rsa 以及 id_rsa.pub两个文件,很明显前一个是私钥,后一个是公钥,cat查看公钥并复制内容
cat rsa.pub
# 创建 authorized_keys 文件,之所以起这个名字,是因为sshd配置文件中默认配置的,理论上可以改
vim ~/.ssh/authorized_keys
# 粘贴公钥内容 wq保存 并更改文件权限,说是要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。
chmod 600 ~/.ssh/authorized_keys
#设置.ssh目录权限
chmod 700 -R ~/.ssh
下面去修改sshd配置文件,开启公钥登录,关闭密码登录
# 打开sshd配置文件,一行行简单看下,主要修改(打开注释或者修改值)点如下:
Port 22
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication no
这时候你已经可以测试私钥可用性了
ssh localhost
下面在客户远程服务器(另一台centos)或者客户操作机(例如windows xshell)上操作,以下统一简称客户机:
# 将前面的私钥id_rsa文件复制到客户机
# 对于linux服务器复制到 ~/.ssh/ 文件名字保持不变
# 完了之后进行测试
ssh user@remote_ip
# 还可以进行scp测试,如果第一次需要输入密码,就先破了这个处再次尝试
scp file user@remote_ip:/remote_path
至于在xshell中的配置:依次点击 工具--用户密钥管理者--导入,找到并选择你从服务器获得的私钥id_rsa文件,保存之后可以在你配置连接的时候选择,比如针对已有连接更改配置如下: 右键--属性--用户身份验证 把方法改为 public key,输入用户名以及对应私钥密码(如果生成时候没填则空着),并选择刚才导入的这个私钥文件,点击连接。