一、服务器A操作步骤
1. 使用普通用户登录服务器A:
依次执行以下命令:
cd ~
--查看是否以前设置过密钥,没有.ssh文件的没有设置过密钥,有可以删除重设
ll -a
--生成密钥,按提示操作,一直按Enter键即可
ssh-keygen
--成功后
chmod -R 700 .ssh/ ;注意权限!
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 .ssh/authorized_keys ;注意权限!这个很重要
2. 关闭普通用户登录服务器A的session,重新使用root登录服务器A:
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。在这里ssh_config不需要修改...只需要修改sshd_config。
执行以下命令:
用root用户改下文件
vi /etc/ssh/sshd_config
添加以下或把相对应的#去掉
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
重启sshd服务
service sshd restart
3.测试
在本机上使用以下命令:
ssh localhost
如果出现如下:
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is 00:95:f0:a9:28:2b:f2:2d:f8:a9:4c:34:ca:b6:17:f0.
Are you sure you want to continue connecting (yes/no)?
则输入yes,即可,输入后按Enter见后出显示登陆成功信息。
如果ssh localhost出现错误,则再次尝试执行以下命令是否能解决:
chmod 644 authorized_keys
在测试通过后再去操作下面的步骤,只有这里测试通过才是配置正确的。
二、客户机B操作步骤
1. 用root登陆客户机B,执行以下命令
mkdir ~/.ssh && chmod 700 ~/.ssh && echo 'StrictHostKeyChecking no' > ~/.ssh/config && echo 'UserKnownHostsFile /dev/null' >> ~/.ssh/config
然后再把服务器A上的生成的id_rsa文件拷贝到客户机B ~/.ssh目录下。
2. 在客户机B上执行以下命令:
ssh A.user@A.ip "pwd"
A.user就是服务器A的普通用户名,A.ip就是服务器A的ip,如果正常的话,就会打印出pwd命令的结果。
3. 遇到的问题
执行ssh A.user@A.ip "pwd" 时可能会遇到以下问题:
Warning: Permanently added '10.1.77.153' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
这个就是客户机B中id_rsa的权限太大,修改为0600即可:
chmod 0600 id_rsa