Linux SSH , SCP 建立信任关系(免密传输)

最近有个需求,Jenkins需要将war传输到各个项目节点中,所以需要远程执行各个节点的shell脚本.但是中间有个输入密码的过程,在自动化部署中是行不通的,故需要增加免密登录.具体如下:

如果想在 A 这太机器上可以不需要密码就 ssh 到 B 、 C 两台机器上,可以采用如下的方法:

( 1 ) 在 A 机器上: ssh-keygen -t rsa

  期间要求输入的,直接回车

这个命令将为 A 上的用户生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase 的时候,直接回车,也就是将 其设定为空密码。生成的密钥对 id_rsa , id_rsa.pub ,默认存储在/home/username/.ssh 目录下。

(2) 在 A 机器上:将 id_rsa.pub 的内容复制到 A 、 B 、 C 三台机器 /home/username/.ssh/authorized_keys 文件中,如果机器上已经有 authorized_keys 这个文件了,就在文件末尾加上 id_rsa.pub 中的内容,如果没有 authorized_keys 这个文件,直接 cp 或者 scp 就好了,下面的操作假设各个机器上都没有 authorized_keys 文件。(如果 B 、 C 机器上没有 ~/.ssh 目录可以手动自己创建 , 权限要设置成可以写,因为要 copyauthorized_keys)

在A机器上 : cp id_rsa.pub authorized_keys

在 B 和 C : scp authorized_keys [email protected]:~/.ssh/ 此处的 username 是要访问的 B 机器上的用户名。

如果机器中已经存在authorized_keys文件,则需注意,这个文件可以包含多个SSH验证信息,这时可用 cat >>命令将验证文件内容附加上去。

比如复制到scp .ssh/id_rsa.pub 192.168.10.2:/root/.ssh/a.pub

然后执行cat ~/.ssh/a.pub >> ~/.ssh/authorized_keys

(3) 在B和C机器上:  chmod 644 authorized_keys
  这一步非常关键,必须保证 authorized_keys 只对其所有者有读写权限,其他人不允许有写的权限,否则 SSH 是不会工作的

(4) 可以直接 ssh [email protected] 机器名了,同一台机器的不同用户直接也可以以这种方式来访问

如果经过上面的步骤还是提示需要密码,注意一下权限问题,主要有三个权限

(1) /home/username这目录的权限应该是700

(2) /home/username/.ssh 这个目录的权限也应该是700

(3) /home/username/.ssh/ authorized_keys这个文件的权限是644

如果还是不正确,那么tail /var/log/secure一下这个日志文件,就能发现问题。

转载文章:https://blog.csdn.net/xqhrs232/article/details/71159718

原文地址:https://www.cnblogs.com/pongyc/p/9835899.html

时间: 2024-10-21 18:41:54

Linux SSH , SCP 建立信任关系(免密传输)的相关文章

两条命令在Linux主机之间建立信任关系

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa //生成当前用户密钥 ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] //拷贝到远程机器上面 ssh [email protected] //测试

ssh免密码登陆 - 服务器建立信任关系

假设机器A,B,C,要建立A为主,可以免密码直接ssh进入B,C.操作如下: 假设只用用户yimr建立信任,则使用yimr用户登陆主机A,执行如下操作: 产生公钥和私钥 ssh-keygen -t rsa 然后,在/home/用户/.ssh目录下,产生id_rsa, id_rsa.pub文件 将公钥复制到BC节点 scp .ssh/id_rsa.pub B:/home/用户名/.ssh/A.pub 进入BC节点,将公钥放在authorized_keys文件中 cat .ssh/A.pub >>

ssh两台机器建立信任关系无密码登陆

在建立信任关系之前先看看基于公钥.私钥的加密和认证. 私钥签名过程 消息-->[私钥]-->签名-->[公钥]-->认证 私钥数字签名,公钥验证 Alice生成公钥和私钥,并将公钥发送给Bob. Alice用自己的私钥生成签名,也就是加密. Alice将签名的信息发送给Bob. Bob用Alice的公钥进行解密,验证签名真伪. 公钥加密过程 消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息 公钥加密,私钥解密 Bob生成自己的公钥和私钥,并将

linux建立信任关系

(1).切换到需要建立信任关系的用户(2).执行命令:ssh-keygen  -d,然后一直回车.该命令会在用户home目录下生成一个隐藏的.ssh目录.目录里面有两个文件:id_dsa.id_dsa.pub这两个是密钥文件,id_dsa是密钥,id_dsa.pub是公钥(3).在.ssh目录下建立文件:authorized_keys(4).在主机vm2上面执行步骤1~3(5).将vm1主机的id_dsa.pub文件内容追加到vm2主机的authorized_keys(6).将vm2主机的id_

Linux SSh scp使用【远程文件/目录的传输】

一:Linux ssh scp的简介及作用: scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器. 有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的. 一.Linux ssh scp 的使用方法 1:将本机文件复制到远程服务器上 #scp /home/test/item.txt [email prote

解决Error"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系

今天写程序的时候调用到一个第三方的DLL文件,本机调试一切都正常,但是程序不是到服务器以后一直提示一个BUG:"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系". 后来把DLL文件进行反编译,发现是在获得请求的时候出错了. 引用 WebResponse response = WebRequest.Create("https://--").GetResponse(); 于是在服务器上用浏览器打开上面的地址,发现会弹出一个确认证书的窗口,看来是证书问题.

两个不同的林根域之间如何建立信任关系

标签:张兆森 步骤:DC的IP地址:192.168.1.1 (DC1) 域名为:benet.com 2.另一个林根域的IP地址:192.168.1.2 (DC2) DNS不要指向主DC了,因为这里跟主DC没有关系了, 3.安装DC 4.创建转发器 5.建立信任关系 实验步骤: 1.安装DC,选择在新林中新建域树 2.这里输入新域的域名 3.林功能选择最高. 4.这里就一直选择下一步,直到出现这 个提示,这里选择是 5.还是一直选择是,直到出现这里, 输入密码,这的密码是你误删DC上的数据, 还原

基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系

#region private static bool ValidateServerCertificate 解决Error"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系." /// <summary> /// 解决Error"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系." /// </summary> /// <param name="sender"></param&

https调用出现【基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系】错误

今天不知道为什么网站访问就出现问题了,惊得我一头汗,别是我昨天打了log4,就影响今天的内容了,后来发现,确实不是,是写入流失败了,报[基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系]错误,后来让总线查,他们说是自己的接口链接证书失效了,正在补救. 病急乱投医中网上查到解决方法:重写通信通道连接验证回调 直接上代码: 1 先加入命名空间: 2 3 using System.Net.Security; 4 using System.Security.Authentication;