ssh免密码登录

简介: ssh免密码登录

1.ssh的登录方式

1.1 密码口令

  • 客户端连接上服务器之后,服务器把自己的公钥传给客户端
  • 客户端输入服务器密码通过公钥加密之后传给服务器
  • 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

1.2 公钥认证

这个其实比上面的要简单,之前上大学时老师也讲过。一定要明白客户端和服务端时通过公钥和私钥实现认证登录的。一定要牢牢记住就是只靠这两个东西,没有其他的了。

拿自动化部署举例,Rundeck部署在一台服务器上现在要对其他的一台或者多台部署服务器进行项目部署,在这个场景下Rundeck对应的服务器要想去访问其他的部署服务器就要通过公私钥的这种方式。


Rundeck服务器相当于A端,而部署服务器相当于B端。A、B两端要实现交互认证就要通过一组公私钥。

1、客户端即A端生成RSA公钥和私钥:

一般在用户的根目录新建一个.ssh/.文件夹,在文件夹中通过ssh-keygen -t rsa命令来产生一组公私钥。

如下图所示id_rsa为私钥,id_rsa.pub为公钥。

b2acf7184f6405e29c7f26eb833c6630.png

2、客户端将自己的公钥存放到服务器:在生成了公私钥之后要实现AB两端的交互认证,这两个文件肯定不能只放到A端,当然也需要在B端(服务器端)做一下登记,我们自己(A端)保留自己的私钥,然后把公钥id_rsa.pub存放到B端(一般是在用户根目录下的.ssh/目录下)


在服务器端(B端)的.ssh/目录下还会有authorized_keys+know_hosts,这两个文件。


3b0424ad38e2dff40c51f4d8d6afa152.png


authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥,上面提到的A端在生成自己的公私钥之后,将公钥追加到authorized_keys文件后面。


87ba1608807ce4000a07d8e2250f9cb1.png


红色框起来的为新追加的A端的公钥。


know_hosts : 已知的主机公钥清单,这个作为A端和B端都会自动生成这个文件,每次和远端的服务器进行一次免密码ssh连接之后就会在这个文件的最后追加对方主机的信息(不重复)



bc7f5a091acabb71df2f006822fc4fc4.png

每进行一次就会在这个文件中自动的追加新的主机信息


通过scp将内容写到对方的文件中


命令:scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys


也可以分解为一下两步来进行:


$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器

$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令


网上很多都是用scp >>去追加,如果你可以登录到B端的话其实直接复制过去就可以了。


需要注意的几点:


设置文件和目录权限(服务器端即B端的权限):


设置authorized_keys权限

$ chmod 600 authorized_keys


79c7e9cdcd21a0a713a6a7470730b43f.png


设置.ssh目录权限

$ chmod 700 -R .ssh


48b874710f01c8923b0b32f28c42e73f.png


到这里我们的配置工作就结束了!!!


进行连接认证:


ssh root@222.73.156.133 -p1019


2925e0f332d38c8ada958827e198f24f.png

如果嫌每次连接的时候很麻烦


我们可以利用 ssh 的用户配置文件 config 管理 多个免密码ssh 会话。ssh 的用户配置文件是放在当前用户根目录下的 .ssh 文件夹里(~/.ssh/config,不存在则新创建一个),其配置写法如下:


Host    别名
    HostName        主机名
    Port            端口
    User            用户名
    IdentityFile    密钥文件的路径


如下图实例:

c60a99a93ad77acb64095e5442587899.png



配置完后我们就可以通过这种方式登录了:

f11000bbecc2e3575fa6b4d853fa2e4a.png


---------------------------------------------------------


两台服务器交互验证的细节如下:


3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端


4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器


5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。


2. 在查看进程的时候不要只看有没有,还要留意进程启动时间和启动的位置

60500884e90a83b4965473c849d537a2.png

3.在进行Rundeck配置的时候要小心,不要复制粘贴的时候多了一个空格,不然会花费你好久去找问题!!!

56cbbaefa282e9bcce89431ccbcfe9e0.png


4.Jenkins读取不到环境变量可以用-ilex解决同样也可以,在脚本中给变量赋值。

 

054ed29491343d5dc12061649ae2686c.png

目录
相关文章
|
29天前
|
域名解析 网络协议 Ubuntu
虚拟机ip不停地变每次使用ssh不好登录?有手就行!
虚拟机ip不停地变每次使用ssh不好登录?有手就行!
29 1
|
6月前
|
Shell 网络安全 数据安全/隐私保护
debian安装ssh(傻瓜教程)+证书免密登录
debian安装ssh(傻瓜教程)+证书免密登录
388 0
|
6月前
|
网络安全
SNETCracker.exe 2022/1/26 31:13:29----检查12.26.20.1:SSH登录发生异常!未能加载文件或程序集“ChilkatDotNet4.dll”或它的某一个依赖项
SNETCracker.exe 2022/1/26 31:13:29----检查12.26.20.1:SSH登录发生异常!未能加载文件或程序集“ChilkatDotNet4.dll”或它的某一个依赖项
152 0
|
3月前
|
安全 网络协议 Linux
|
7月前
|
运维 搜索推荐 Shell
Ansible自动化运维工具之个性化定制SSH连接登录端口(3)
Ansible自动化运维工具之个性化定制SSH连接登录端口(3)
190 0
|
3月前
|
关系型数据库 网络安全 数据库
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
80 6
|
3月前
|
网络安全 数据安全/隐私保护
如何使用ssh key免密码登录服务器?
如何使用ssh key免密码登录服务器?
|
4月前
|
安全 Linux Shell
Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
105 0
|
4月前
|
安全 Linux 网络安全
服务器设置 SSH 通过密钥登录
服务器设置 SSH 通过密钥登录
|
5月前
|
Linux 网络安全 数据安全/隐私保护
Xshell配置ssh免密码登录-公钥与私钥登录linux服务器
Xshell配置ssh免密码登录-公钥与私钥登录linux服务器
217 1