SSH免密登陆

原理

服务器A(10.10.26.95)要免密访问服务器B(10.18.36.231),则A作为客户端,要把自己的公钥发送给B服务器作为备案,然后就可以通过公钥备案免密访问

流程

A生成公私钥

1、在服务器A上进入.ssh目录(一般公私钥存放在这个目录下)
cd ~/.ssh/
2、生成公私钥(可以带参数,自己查阅-t -f -C)(会在当前目录下生成公私钥)
ssh-keygen
连敲三次回车确定

结果

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
78:2b:********************:3c:3c:56:cf root@zw_26_95
3、检查
ls

结果列表

authorized_keys  id_rsa  id_rsa.pub  known_hosts

id_rsa即私钥,id_rsa.pub是公钥

复制公钥给B服务器

1、复制
ssh-copy-id -i id_rsa.pub root@10.18.36.231

id_rsa.pub是/root/.ssh/目录下的公钥文件,root是B服务器下的用户名,10.18.36.231是B服务器的ip

2、确定RSA指纹(若之前访问过B服务器则没有此步骤)
10
The authenticity of host '10.18.36.231 (10.18.36.231)' can't be established.
RSA key fingerprint is 2d:aa:14**********************e:cb:ef:d0:f0.
Are you sure you want to continue connecting (yes/no)? 

因为是第一次连接B服务器,所以提示确定B服务器的RSA指纹是否可靠,输入yes确定

3、输入B服务器用户名的密码
Warning: Permanently added '10.18.36.231' (RSA) to the list of known hosts.
root@10.18.36.231's password: 

提示B服务器的RSA指纹认证已经永久添加到本服务器的known hosts文件中(vim ~/.ssh/known hosts查看)

输入B服务器上root用户名的密码回车 (在这里应该是用作本次登陆B服务器配置B服务器的authorized_keys文件,只需要这里配置的时候输入一次,配置完公钥之后ssh访问就不需要再使用密码了,初次配置还是需要密码的,也防止随意客户端都能免密访问服务器的情况)

4、登陆B服务器
Now try logging into the machine, with "ssh '[email protected]'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

提示你使用ssh '[email protected]'去访问B服务器并查看.ssh目录下的authorized_keys文件,确认添加的公钥正确。 登陆B服务器之后,可以看到authorized_keys文件中添加了A服务器的公钥(*为抹掉的内容)

ssh-rsa AAAAB**********AAAABIwAAAQE************rrlFxlNH1zO9J2e********L6tCy4u9S2FL10hfTww8ju********wk8l5s6YCOwZYa9Yj***Ao8ZWi4e0owzfwQ**********qkboLFB6Mz81ZfEUL/a5Hn9rqdWzd+xY3*************4alT6RrRz0XIgtBtMdJeSUP/SU4lnuGt********nyXRIcbZq54gEwqed8T0qC9w**Toj/QJ8VlpueEWdCcS***********gpqXm7ZJlDfAru3B3doQdTYuL7kx2KKysq**********rJQ8G4vsK7039Iw== root@zw_26_95

配置完成

exit退回到A服务器

exit

个人思考

1、配置A免密访问B,应该是把 A 的公钥配置到 B 的authorized_keys中,在之后就可以通过公钥免密访问了;

2、配置公钥过程中是需要指定B的用户名和密码的,避免了客户端随意配置公钥访问服务器的问题;

3、SSH访问是两个机器的用户之间的免密访问,在A上如果是root用户发起ssh-copy-id,则B服务器中的authorized_keys文件中存的是A的root用户下的公钥(看最后的root@zw_26_95),发起ssh-copy-id时后面用户部分填的是访问的B服务器的用户(eg:mercyu),用户名和密码通过的话,则会在B服务器mercyu的对应目录下(/home/mercyu/.ssh/)的authorized_keys存储,那么登陆的时候则是对应登陆到mercyu用户。特别的,如果省去用户名不写的话,默认是root用户

3、authorized_keys文件认证能够免密访问的客户端的公钥,known hosts文件是在第一次访问目标服务器时在本地服务器添加对于目标服务器的RSA指纹认证,整个过程A的known hosts文件变更,B的authorized_keys文件变更;

4、ssh-copy-id和ssh-keygen都是脚本文件,在/usr/bin/目录下面.

你可能感兴趣的:(日常工作)