ssh免密登录

合集下载

Linux配置SSH免密登录“ssh-keygen”的基本用法

Linux配置SSH免密登录“ssh-keygen”的基本用法

Linux配置SSH免密登录“ssh-keygen”的基本⽤法⽬录1 什么是SSH2 配置SSH免密登录2.1 安装必需的软件2.2 ssh-keygen创建公钥-私钥对2.3 ssh-copy-id把A的公钥发送给B2.4 在A服务器上免密登录B服务器3 扩展说明3.2 ⽂件权限3.3 ⽂件的编辑和查看1 什么是SSH引⽤百度百科的说明:SSH 为 Secure Shell的缩写,由 IETF 的⽹络⼩组(Network Working Group)所制定;它是建⽴在应⽤层基础上的安全协议。

SSH 是⽬前较可靠,专为远程登录会话和其他⽹络服务提供安全性的协议。

利⽤ SSH 协议可以有效防⽌远程管理过程中的信息泄露问题。

SSH最初是UNIX系统上的⼀个程序,后来⼜迅速扩展到其他操作平台。

为了在不同平台/⽹络主机之间的通信安全, 很多时候我们都要通过ssh进⾏认证. ssh认证⽅式主要有2种:①基于⼝令的安全认证: 每次登录的时候都要输⼊⽤户名和密码, 由于要在⽹络上传输密码, 可能存在中间⼈攻击的风险;②基于密钥的安全认证: 配置完成后就可以实现免密登录, 这种⽅式更加安全 —— 不需要在⽹络上传递⼝令, 只需要传输⼀次公钥. 常见的git的ssh⽅式就是通过公钥进⾏认证的.2 配置SSH免密登录说明: 这⾥演⽰所⽤的服务器操作系统是Cent OS 7. 我们的⽬标是:A服务器(172.16.22.131) 能免密登录 B服务器 (172.16.22.132).注意: ssh连接是单向的, A能免密登录B, 并不能同时实现B能免密登录A.2.1 安装必需的软件在操作之前, 先确保所需要的软件已经正常安装.这⾥我们需要安装ssh-keygen和ssh-copy-id, 安装⽅式如下:# 安装ssh-keygen, 需要确保服务器可以联⽹. 博主这⾥已经安装完成, 所以没有做任何事.[root@localhost ~]# yum install -y ssh-keygenLoaded plugins: fastestmirror, langpacksbase | 3.6 kB 00:00:00epel | 3.6 kB 00:00:00extras | 2.9 kB 00:00:00updates | 2.9 kB 00:00:00Loading mirror speeds from cached hostfileNo package ssh-keygen available.Error: Nothing to do# 安装ssh-copy-id[root@localhost ~]# yum install -y ssh-copy-idLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfileNo package ssh-copy-id available.Error: Nothing to do2.2 ssh-keygen创建公钥-私钥对(1) 在指定⽬录下⽣成rsa密钥, 并指定注释为“shoufeng”, 实现⽰例:[root@localhost ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "shoufeng"# ~密钥类型 ~密钥⽂件路径及名称 ~ 备注信息Generating public/private rsa key pair.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:9a:e3:94:b9:69:c8:e9:68:4b:dc:fa:43:25:7f:53:f1 shoufengThe key's randomart image is:+--[ RSA 2048]----+| || . || o || . . . E || + S. || . .. .=o || oo.oB. . || ..o=o.+ || .++oo+ |+-----------------+注意: 密钥的⽂件名称必须是id_xxx, 这⾥的xxx就是-t参数指定的密钥类型. ⽐如密钥类型是rsa, 那么密钥⽂件名就必须是id_rsa.(2) ssh-keygen常⽤参数说明:-t: 密钥类型, 可以选择 dsa | ecdsa | ed25519 | rsa;-f: 密钥⽬录位置, 默认为当前⽤户home路径下的.ssh隐藏⽬录, 也就是~/.ssh/, 同时默认密钥⽂件名以id_rsa开头. 如果是root⽤户, 则在/root/.ssh/id_rsa, 若为其他⽤户, 则在/home/username/.ssh/id_rsa; -C: 指定此密钥的备注信息, 需要配置多个免密登录时, 建议携带;-N: 指定此密钥对的密码, 如果指定此参数, 则命令执⾏过程中就不会出现交互确认密码的信息了.举例说明: 同时指定⽬录位置、密码、注释信息, 就不需要输⼊回车键即可完成创建:ssh-keygen -t rsa -f ~/.ssh/id_rsa -N shoufeng -C shoufeng(3) 前往~/.ssh/⽬录下查看⽣成的⽂件:# ⽣成的⽂件以test_rsa开头, test_rsa是私钥, test_rsa.pub是公钥:[root@localhost .ssh]# lstest_rsa test_rsa.pub# 通过cat命令查看公钥⽂件:[root@localhost .ssh]# cat id_rsa.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2JpLMqgeg9jB9ZztOCw0WMS8hdVpFxthqG1vOQTOji/cp0+8RUZl3P6NtzqfHbs0iTcY0ypIJGgx4eXyipfLvilV2bSxRINCVV73VnydVYl5gLHsrgOx+372Wovlanq7Mxq06qAONjuRD0c64xqdJFKb1Ov# 可以看到最后有⼀个注释内容shoufeng2.3 ssh-copy-id把A的公钥发送给B默认⽤法是: ssh-copy-id root@172.16.22.132, ssh-copy-id命令连接远程服务器时的默认端⼝是22, 当然可以指定⽂件、远程主机的IP、⽤户和端⼝:# 指定要拷贝的本地⽂件、远程主机的IP+⽤户名+端⼝号:[root@localhost .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@172.16.22.132/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysroot@172.16.22.132's password: # 输⼊密码后, 将拷贝公钥Number of key(s) added: 1Now try logging into the machine, with: "ssh -p '22' 'root@172.16.22.132'"and check to make sure that only the key(s) you wanted were added.2.4 在A服务器上免密登录B服务器[root@localhost .ssh]# ssh root@172.16.22.132Last login: Fri Jun 14 08:46:04 2019 from 192.168.34.16 # 登录成功3 扩展说明3.1 其他⽅式发送公钥⽂件上述2.3步骤是通过ssh-copy-id⼯具发送公钥⽂件的, 当然我们也可以通过其他⽅式实现:(1) 将A的公钥⽂件发给B:通过scp命令将A服务器的公钥⽂件发送到B服务器的⽤户⽬录下, 因为还没有配置成功免密登录, 所以期间需要输⼊B服务器对应⽤户的密码:[root@localhost .ssh]# scp id_rsa.pub root@172.16.22.132:/root/.sshroot@172.16.22.132's password:id_rsa.pub 100% 390 0.4KB/s 00:00(2) 在B上创建authorized_keys⽂件:[root@localhost .ssh]# cd /root/.ssh/[root@localhost .ssh]# lsid_rsa.pub# 通过A服务器的公钥⽣成"authorized_keys"⽂件:[root@localhost .ssh]# cat id_rsa.pub >> authorized_keys[root@localhost .ssh]# cat authorized_keysssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2JpLMqgeg9jB9ZztOCw0WMS8hdVpFxthqG1vOQTOji/cp0+8RUZl3P6NtzqfHbs0iTcY0ypIJGgx4eXyipfLvilV2bSxRINCVV73VnydVYl5gLHsrgOx+372Wovlanq7Mxq06qAONjuRD0c64xqdJFKb1OvS/nyKaOr9注意: 上述重定向时使⽤>>进⾏追加, 不要⽤>, 那会清空原有内容.3.2 ⽂件权限为了让私钥⽂件和公钥⽂件能够在认证中起作⽤, 需要确保权限的正确性:①对于.ssh⽬录以及其内部的公钥、私钥⽂件, 当前⽤户⾄少要有执⾏权限, 其他⽤户最多只能有执⾏权限.②不要图省事设置成777权限: 太⼤的权限不安全, ⽽且数字签名也不⽀持这种权限策略.③对普通⽤户, 建议设置成600权限: chmod 600 authorized_keys id_rsa id_rsa.pub;④对root⽤户, 建议设置成644权限: chmod 644 authorized_keys id_rsa id_rsa.pub.3.3 ⽂件的编辑和查看在Liunx环境下, 如果要查看、复制私钥、公钥, 以及authorized_keys等⽂件, 不要使⽤vim等编辑器打开, 因为它会产⽣不必要的回车;应该通过cat、more、less等查看命令把内容打印到终端上, 再作查看、复制等操作.总结以上所述是⼩编给⼤家介绍的Linux 配置SSH免密登录 “ssh-keygen”的基本⽤法 ,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

设置ssh无密码登录linux服务器的方法

设置ssh无密码登录linux服务器的方法

设置ssh⽆密码登录linux服务器的⽅法每次登录测试服务器,ssh登录总是需要输⼊密码。

登录的少还⾏,登录的多了,多⼀⾏命令都是多余的。

rsa认证登录⽅式制作密钥对在客户端(本地机器)终端下输⼊以下命令ssh-keygen -t [rsa|dsa]rsa和dsa代表不同的算法例如:ssh-keygen -t rsa⼀直回车就对了(不⽤设置密码)将会⽣成密钥⽂件和私钥⽂件 id_rsa,id_rsa.pub(如果⽤dsa则⽣成id_dsa,id_dsa.pub)⽣成位置在/root/.ssh/⽂件夹下(我⽤的是root⽤户所以在root下,⽣成过程会有提⽰⽂件位置).ssh 是隐藏⽂件夹使⽤ ls -a查看将公钥放到服务器指定位置⽅法⼀、直接复制1、将公钥复制到服务器的root⽤户下的.ssh⽂件夹(⽤哪个⽤户登录就复制到哪个⽤户下的.ssh⽂件夹下)scp /root/.ssh/id_rsa.pub root@172.16.0.164:/root/.ssh/2、安装公钥登录到服务器cd /root/.ssh/cat id_rsa.pub >> authorized_keys⽅法⼆、使⽤ssh-copy-id命令复制(推荐)⼀个命令直接就ok了ssh-copy-id root@172.16.0.164验证不⽤输⼊密码则成功,否则失败ssh root@172.16.0.164注意事项上⾯操作测试过是没有问题的linux的版本和使⽤的⽤户不同会有差别的。

如果出现问题可以考虑以下两点1、id_rsa.pub和authorized_keys的⽂件权限问题chmod 600 authorized_keyschmod 700 ~/.ssh2、ssh的配置⽂件vim /etc/ssh/sshd_config#启⽤ RSA 认证,默认为yesRSAAuthentication yes启⽤公钥认证,默认为yesPubkeyAuthentication yes#root⽤户ssh登录PermitRootLogin yes(这些配置我都是没有修改的,我的是redhat7.2)⾃定义写个简单shell脚本在常⽤⽂件夹下创建个⽂件touch 164.sh编辑⽂件⽂件内容 ssh root@172.16.0.164vim 164.sh#添加内容ssh root@172.16.0.164保存退出:wq增加⽤户的执⾏权限chmod u+x 164.sh搞定结合tab键使⽤更爽哟./164.shexpect命令免密登录⽅式可能你觉得需要操作服务器系统不好,当然也可以只在本地操作。

VSCode使用ssh密钥免密远程登录服务器的方法

VSCode使用ssh密钥免密远程登录服务器的方法

VSCode使⽤ssh密钥免密远程登录服务器的⽅法⽬录1. 使⽤ssh密钥免密远程登录服务器2. 配置解释器1. 使⽤ssh密钥免密远程登录服务器如果你还未曾成功远程登陆过服务器,下⾯或许对你有帮助如果你成功远程登陆过服务器,Let's start!1. 在VSCode的terminal中输⼊ssh-keygen⼀直按回车,直到出现:这个时候你会拥有⼀对私钥和公钥,路径为:C:\Users\user_name\.ssh\id_rsaC:\Users\user_name\.ssh\id_rsa.pub如果没有在上⾯的路径中找到,可以登录远程服务器,在/home/user_name/.ssh/中找到上述两个⽂件,此时最好将两个⽂件复制⼀份到C:\Users\user_name.ssh\中。

2.远程登录服务器,进⼊/home/user_name/.ssh/,将id_rsa.pub中的内容复制到authorized_keys中(如果没有,请⾃⼰创建),保存。

(远程服务器上最终找到.ssh的路径可能有所不同,可以⾃⼰寻找)3.回到VSCode,在Remote -SSH的config⽂件中添加私钥的信息:IdentityFile "C:\Users\user_name\.ssh\id_rsa"4. 保存后,可以关掉重新登陆⼀次,看是否需要输⼊密码。

总结:利⽤ssh-keygen⽣成⼀对公钥和私钥,将公钥配置在服务器上,将私钥配置在VSCode的config中,通过密钥配对来登录。

2. 配置解释器前提条件:已经装好了Anaconda1.在VSCode中的file–preferences–settings中:在搜索框输⼊python.pythonpath,并在下⽅输⼊框中填⼊Anaconda的安装路径如果搜索框搜不出python.pythonpath,记得要先在Extensions中安装python和code runner。

ssh连接原理介绍(无密码连接登录的原理)

ssh连接原理介绍(无密码连接登录的原理)

ssh连接原理介绍(⽆密码连接登录的原理)SSH(Secure Shell)⼀种在不安全⽹络上提供安全远程登录及其它安全⽹络服务的协议。

由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x、(SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上,OpenSSH 2.x 从来看,SSH提供两种级别的安全验证。

第⼀种级别(基于⼝令的安全验证)只要你知道⾃⼰帐号和⼝令,就可以登录到远程主机。

所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。

可能会有别的服务器在冒充真正的服务器,也就是受到“中间⼈”这种⽅式的攻击。

第⼆种级别(基于密匙的安全验证)需要依靠,也就是你必须为⾃⼰创建⼀对密匙,并把公⽤密匙放在需要访问的服务器上。

如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求⽤你的密匙进⾏安全验证。

服务器收到请求之后,先在该服务器上你的主⽬录下寻找你的公⽤密匙,然后把它和你发送过来的公⽤密匙进⾏⽐较。

如果两个密匙⼀致,服务器就⽤公⽤密匙加密“质询”(challenge)并把它发送给客户端软件。

客户端软件收到“质询”之后就可以⽤你的私⼈密匙解密再把它发送给服务器。

⽤这种⽅式,你必须知道⾃⼰密匙的⼝令。

但是,与第⼀种级别相⽐,第⼆种级别不需要在⽹络上传送⼝令,不仅加密所有传送的数据,⽽且“中间⼈”这种攻击⽅式也是不可能的(因为他没有你的私⼈密匙)。

但是整个登录的过程可能需要10秒。

建⽴ssh连接时,不提供密码就能够同远程系统建⽴连接,其认证协议基础是⼀对专门⽣成的密钥,分别叫做专⽤密钥和公⽤密钥。

密钥是基于不同的加密算法⽣成的,⽬前常⽤的是⼀对互补的数字式密钥的RSA 和 DSA 认证协议来认证⽤户。

Rsa和dsa是两种常见的⾮对称加密算法,详细介绍:/security_zone/2008/0612/922185.shtmlRSA:由 RSA 公司发明,是⼀个⽀持变长密钥的公共密钥算法,需要加密的⽂件块的长度也是可变的;DSA(Digital Signature Algorithm):数字签名算法,是⼀种标准的 DSS(数字签名标准);此外还有ECC(Elliptic Curves Cryptography引⾃⽹络:⽣成SSH密钥过程:1.查看是否已经有了ssh密钥:cd ~/.ssh如果没有密钥则不会有此⽂件夹,有则备份删除2.⽣存密钥:$ ssh-keygen -t rsa -C “ou@”按3个回车,密码为空。

Linux之间配置SSH互信(SSH免密码登录)

Linux之间配置SSH互信(SSH免密码登录)
3、验证
[root@client /]#ssh 192.168.1.20 #s单就是分区那一块如果写更详细点对我们这种不懂分区的人来说就更好了
Linux之间配置 SSH互信( SSH免密码登录)
为简化SSH过程,采用证书方式,免去SSH登入时需要输入账号密码的过程,具体操作如下: 一、在SSH服务器所在机器上 1、以root用户登录,更改ssh配置文件 /etc/ssh/sshd_config,去除以下配置的注释
RSAAuthentication yes #启用rsa认证 PubkeyAuthentication yes #启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
2、重启SSH服务
[root@server /]#systemctl restart sshd //重启ssh服务
二、在客户端机器上
1、生成公钥私钥对
[root@client /]#ssh-keygen -t rsa
一路默认回车,系统在/root/.ssh下生成id_rsa、id_rsa.pub 2、把id_rsa.pub发送到服务端机器上
[root@client /]#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.20 #server ip

ssh免密原理

ssh免密原理

ssh免密原理SSH是一种非常流行的安全网络协议,它可以被用来远程控制应用程序和系统,而SSH免密登录则是利用公钥和私钥的加密机制来实现SSH的自动登录。

在本文中,我们将详细介绍SSH免密登录的实现原理。

1. 密码验证与公钥验证在SSH登录过程中,普通的登录方式是使用密码进行验证。

但是,SSH也支持使用公钥验证机制进行认证。

公钥验证机制基于对称加密算法和非对称加密算法,安全性较高,因此它被越来越多地使用。

2. 加密通信原理SSH在传输数据时使用加密通道,任何在传输过程中的第三方都无法通过普通的方式来读取数据。

SSH使用对称加密算法和非对称加密算法来保证数据的安全性。

对称加密算法使用相同的密钥进行加密和解密,而非对称加密算法则使用一对密钥来进行加密和解密。

公钥被传输到目标计算机,私钥保存在本地计算机中。

当客户端进行SSH连接请求时,服务端会把公钥传输到客户端中,然后客户端使用公钥进行加密通讯的过程。

3. 公钥和私钥生成方法SSH免密码登录需要使用公钥和私钥。

公钥可以随意传递,但是私钥一定要保持机密。

在Linux系统中,可以使用OpenSSH可以生成公钥和私钥。

使用以下命令即可生成:ssh-keygen -t rsa在生成的公钥和私钥文件中,私钥文件必须被设置为只读,其权限建议设置为600。

公钥可以复制到其他需要使用的计算机中。

4. 配置SSH免密登录使用公钥和私钥之后,需要将公钥文件复制到目标计算机的.ssh目录下的authorized_keys文件中,这样只有在持有此公钥的计算机才能进行SSH免密登录。

需要注意的是,当前用户在目标计算机上必须存在,并且在.ssh目录下必须存在authorized_keys文件。

如果不存在该文件,可以手动创建该文件。

5. 实现SSH免密登录通过以上的步骤,就可以实现SSH免密登录了。

当SSH客户端通过用户名和密码进行验证之后,服务器将对客户端提供的公钥进行验证,如果公钥与目标计算机上的authorized_keys文件中的公钥一致,则客户端将被授予服务。

ssh免密登录跟公钥的理解

ssh免密登录跟公钥的理解
SSH 免密登录是一种安全的登录方式,通过使用公钥和私钥来进行身份验证,避免了在每次登录时都输入密码。

公钥和私钥是一对加密密钥。

公钥是可以公开的,用于加密信息;私钥是保密的,用于解密信息。

在 SSH 免密登录中,客户端生成一对公钥和私钥,并将公钥上传到服务器上。

当客户端尝试通过 SSH 连接到服务器时,服务器会使用客户端提供的公钥来验证其身份。

具体流程如下:
1. 客户端生成公钥和私钥。

2. 将公钥上传到服务器的特定文件中(通常是`~/.ssh/authorized_keys`)。

3. 客户端通过 SSH 连接到服务器时,会发送其公钥给服务器。

4. 服务器检查`authorized_keys`文件中是否存在与客户端公钥匹配的条目。

5. 如果找到匹配的公钥,服务器使用该公钥加密一个随机生成的挑战信息,并发送给客户端。

6. 客户端使用私钥解密挑战信息,并将结果返回给服务器。

7. 服务器验证解密结果是否与预期一致,如果一致,则允许客户端登录,无需输入密码。

通过这种方式,只有拥有匹配私钥的客户端才能成功进行身份验证,确保了登录的安全性。

SSH 免密登录提供了更方便和安全的登录方式,特别适用于需要频繁登录服务器的情况。

ssh免密登录配置(配置后还需要密码输入密码问题解决)

ssh免密登录配置(配置后还需要密码输⼊密码问题解决)背景需要搭建jenkins,⽤来⾃动部署服务到⽬标服务器,所以需要在jenkins所在机器配置免密登录⽬标服务器环境阿⾥云服务器:服务器A(jenkins所在服务器),服务器B(部署⽬标服务器)步骤⼀服务器A部分1 登录A,2 ⽣成秘钥1)⾸先查看.ssh下是否已经有id_rsa和id_rsa.pub⽂件,以免被覆盖2)⽣成秘钥ssh-keygen -t rsa -C "xxx@jenkins"3)将在.ssh⽂件夹下⽣成2个⽂件 id_rsa, id_rsa.pub,重命名为 id_rsa_jenkins,id_rsa_jenkins.pub 以免以后冲突3 配置config 在~/.ssh 下创建config⽂件Host pre1HostName xx.xx.xx.xxHost pre2HostName xx.xx.xx.xxHost *User 登录⽬标机器的⽤户Port 登录⽬标机器的端⼝IdentityFile ~/.ssh/id_rsa_jenkins 私钥所在路径 由于⽤户,端⼝号,秘钥,都是通⽤的,所以以通配符来配置,只有服务器地址不同,每个⽬标服务器单独配置4 拷贝id_rsa_jenkins.pub 内的内容⼆服务器B部分1 使⽤要免密登录的账户登录服务器B2 在~/.ssh⽂件夹下查看是否有 authorized_keys 没有则创建3 将id_rsa_jenkins.pub的内容,追加到authorized_keys后⾯4 查看 /ect/ssh/sshd_config 需要有如下配置RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile %h/.ssh/authorized_keys5 切换到root⽤户重启 sshd : service sshd restart结果在服务器A ssh pre1结果还让输⼊密码,⼀定是我哪⾥配置的不对,查找问题解决问题开两个窗⼝,分别登录服务器A和B服务器B:1 登录root⽤户2 停⽌ssh service ssh stop3 debug运⾏ssh /usr/sbin/sshd -d服务器A:尝试ssh : ssh -v pre1 查看详情服务器A⽇志:OpenSSH_7.6p1 Ubuntu-4ubuntu0.4, OpenSSL 1.0.2n 7 Dec 2017debug1: Reading configuration data /var/lib/jenkins/.ssh/configdebug1: /var/lib/jenkins/.ssh/config line 5: Applying options for pre1debug1: /var/lib/jenkins/.ssh/config line 8: Applying options for *debug1: Reading configuration data /etc/ssh/ssh_configdebug1: /etc/ssh/ssh_config line 19: Applying options for *debug1: Connecting to **.**.**.** [**.**.**.**] port ****.debug1: Connection established.debug1: identity file /var/lib/jenkins/.ssh/id_rsa_jenkins type0debug1: key_load_public: No such file or directorydebug1: identity file /var/lib/jenkins/.ssh/id_rsa_jenkins-cert type -1debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.4debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.4debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 pat OpenSSH* compat 0x04000000debug1: Authenticating to **.**.**.**:**** as 'username'debug1: SSH2_MSG_KEXINIT sentdebug1: SSH2_MSG_KEXINIT receiveddebug1: kex: algorithm: curve25519-sha256@debug1: kex: host key algorithm: ecdsa-sha2-nistp256debug1: kex: server->client cipher: chacha20-poly1305@ MAC: <implicit> compression: nonedebug1: kex: client->server cipher: chacha20-poly1305@ MAC: <implicit> compression: nonedebug1: expecting SSH2_MSG_KEX_ECDH_REPLYdebug1: Server host key: ecdsa-sha2-nistp256 SHA256:+/jjmuxy3eZ61XEguY2327fz7OfrhIks1edgLK3AnWYdebug1: Host '[**.**.**.**]:****' is known and matches the ECDSA host key.debug1: Found key in /var/lib/jenkins/.ssh/known_hosts:4debug1: rekey after 134217728 blocksdebug1: SSH2_MSG_NEWKEYS sentdebug1: expecting SSH2_MSG_NEWKEYSdebug1: SSH2_MSG_NEWKEYS receiveddebug1: rekey after 134217728 blocksdebug1: SSH2_MSG_EXT_INFO receiveddebug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>debug1: SSH2_MSG_SERVICE_ACCEPT receiveddebug1: Authentications that can continue: publickey,passworddebug1: Next authentication method: publickeydebug1: Offering public key: RSA SHA256:XS0Qkck+0F5M0iJdLn3/owfK9QGxPSQxRoYcCGcb9zQ /var/lib/jenkins/.ssh/id_rsa_jenkinsdebug1: Authentications that can continue: publickey,passworddebug1: Next authentication method: password发现在登录过程中,尝试证书认证,但是没有认证通过,改为密码登录,于是查看服务器B⽇志,看看因为什么导致证书认证错误服务器B⽇志debug1: sshd version OpenSSH_7.2, OpenSSL 1.0.2g 1 Mar 2016debug1: private host key #0: ssh-rsa SHA256:FdwiwpgHBW6MTxKJSkVYbtYS/H/kYr+o6JAoFjzOrY8debug1: private host key #1: ssh-dss SHA256:thpjst+JHWAjnRyEDtOjWeVNO7JFl5K2FETPSLU5hcgdebug1: private host key #2: ecdsa-sha2-nistp256 SHA256:+/jjmuxy3eZ61XEguY2327fz7OfrhIks1edgLK3AnWYdebug1: private host key #3: ssh-ed25519 SHA256:9X0yrjSoRLi/AM/oyozk3Sgd+G0JoDyJbIZFv1rt1Rgdebug1: rexec_argv[0]='/usr/sbin/sshd'debug1: rexec_argv[1]='-d'debug1: Set /proc/self/oom_score_adj from 0 to -1000debug1: Bind to port **** on 0.0.0.0.Server listening on 0.0.0.0 port ****.debug1: Server will not fork when running in debugging mode.debug1: rexec start in4 out 4 newsock 4 pipe -1 sock 7debug1: inetd sockets after dupping: 3, 3Connection from **.**.**.** port **** on **.**.**.** port ****debug1: Client protocol version 2.0; client software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.4debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.4 pat OpenSSH* compat 0x04000000debug1: Enabling compatibility mode for protocol 2.0debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4debug1: permanently_set_uid: 109/65534 [preauth]debug1: list_hostkey_types: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 [preauth]debug1: SSH2_MSG_KEXINIT sent [preauth]debug1: SSH2_MSG_KEXINIT received [preauth]debug1: kex: algorithm: curve25519-sha256@ [preauth]debug1: kex: host key algorithm: ecdsa-sha2-nistp256 [preauth]debug1: kex: client->server cipher: chacha20-poly1305@ MAC: <implicit> compression: none [preauth]debug1: kex: server->client cipher: chacha20-poly1305@ MAC: <implicit> compression: none [preauth]debug1: expecting SSH2_MSG_KEX_ECDH_INIT [preauth]debug1: rekey after 134217728 blocks [preauth]debug1: SSH2_MSG_NEWKEYS sent [preauth]debug1: expecting SSH2_MSG_NEWKEYS [preauth]debug1: rekey after 134217728 blocks [preauth]debug1: SSH2_MSG_NEWKEYS received [preauth]debug1: KEX done [preauth]debug1: userauth-request for user username service ssh-connection method none [preauth]debug1: attempt 0 failures 0 [preauth]debug1: PAM: initializing for"username"debug1: PAM: setting PAM_RHOST to "**.**.**.**"debug1: PAM: setting PAM_TTY to "ssh"debug1: userauth-request for user username service ssh-connection method publickey [preauth]debug1: attempt 1 failures 0 [preauth]debug1: userauth_pubkey: test whether pkalg/pkblob are acceptable for RSA SHA256:XS0Qkck+0F5M0iJdLn3/owfK9QGxPSQxRoYcCGcb9zQ [preauth] debug1: temporarily_use_uid: 1000/1000 (e=0/0)debug1: trying public key file /home/username/.ssh/authorized_keysdebug1: fd 4 clearing O_NONBLOCKAuthentication refused: bad ownership or modes for directory /home/usernamedebug1: restore_uid: 0/0Failed publickey for username from **.**.**.** port **** ssh2: RSA SHA256:XS0Qkck+0F5M0iJdLn3/owfK9QGxPSQxRoYcCGcb9zQConnection closed by **.**.**.** port **** [preauth]debug1: do_cleanup [preauth]debug1: monitor_read_log: child log fd closeddebug1: do_cleanupdebug1: PAM: cleanupdebug1: Killing privsep child 17849debug1: audit_event: unhandled event 12核⼼部分, /home/username ⽤户⽂件夹权限不对,修改为700 :chmod 700 /home/username再来⼀遍⼜出现了Authentication refused: bad ownership or modes for directory /home/username/.ssh改为700再来⼀遍链接成功最后提醒,解决完了千万别忘记将服务器B的ssh再启动起来最后提醒,解决完了千万别忘记将服务器B的ssh再启动起来最后提醒,解决完了千万别忘记将服务器B的ssh再启动起来。

ssh免密码登录Permissiondenied(publickey,gssapi-key。。。

ssh免密码登录Permissiondenied(publickey,gssapi-key。

当出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 警告的时候,恭喜你,你已经离成功很近了。

远程主机这⾥设为slave2,⽤户为Hadoop。

本地主机设为slave1以下都是在远程主机slave2上的配置,使得slave1可以免密码连接到slave2上。

如果想免密码互联,原理⼀样的,在slave1上也这么配置即可!(1)⾸先:配置ssh服务器配置⽂件。

在root ⽤户下才能配置。

vi /etc/ssh/sshd_config权限设为no:#PermitRootLogin yes#UsePAM yes#PasswordAuthentication yes如果前⾯有# 号,将#号去掉,之后将yes修改为no。

修改之后为:PermitRootLogin noUsePAM noPasswordAuthentication no权限设为yes:RSAAuthentication yesPubkeyAuthentication yes(2)重启sshd服务systemctl restart sshd.servicesystemctl status sshd.service #查看ssh服务的状态#systemctl start sshd.service #开启ssh服务#sytemctl enable sshd.service #ssh服务随开机启动,还有个disabled#systemctl stop sshd.ervice #停⽌正常情况下应该是Active:active(running)(3)修改⽂件夹以及⽂件的权限。

#chmod 700 /home/Hadoop/.ssh#chmod 644 /home/Hadoop/.ssh/authorized_keys(4)在slave1上进⾏测试ssh slave2上⾯就是完整的解决这个问题的办法!总结:出现这种警告,我觉得最终的原因是⽂件夹以及⽂件的读写权限的问题。

linux免密登录原理

linux免密登录原理Linux 免密登录原理前言Linux 免密登录是指用户在使用 SSH 与远程服务器通信时,无需输入密码即可完成登录的过程。

这种登录方式比传统的基于密码的登录更加安全,因为在密码登录中,密码很容易被窃取或暴力破解。

而通过公钥加密的方式实现的免密登录,则能够避免此类风险,同时也方便了用户的登录操作。

实现原理在了解 Linux 免密登录的实现原理之前,我们需要先了解一些基本概念。

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中,安全地传输数据。

SSH 协议可以保护网络通信的安全性,并且可以避免数据在途中被窃取或篡改。

公钥和私钥是一对密钥,用于加密和解密数据。

其中,公钥是用于加密数据的密钥,通常存储在远程服务器中;而私钥则是用于解密数据的密钥,通常存储在客户端本地。

了解以上基本概念之后,我们再来看看 Linux 免密登录的实现原理:1. 用户在本地生成一对公钥和私钥,其中,私钥存储在本地,公钥则复制到要登录的远程服务器上。

2. 用户通过 SSH 连接到远程服务器时,远程服务器根据预先存储的公钥来验证用户身份。

如果公钥验证通过,则允许用户登录。

3. 当用户登录成功后,客户端会在本地存储被远程服务器接受的公钥信息,以便后续免密登录时进行验证。

4. 当用户再次通过 SSH 连接到远程服务器时,远程服务器首先会验证客户端发送的公钥是否与之前存储的公钥一致。

如果一致,则直接允许用户登录,无需再次输入密码。

通过上述实现原理,我们可以得出以下结论:1. 免密登录方式使用公钥来验证用户身份,从而能够有效地避免密码泄露的风险。

2. 免密登录最初需要用户输入一次密码,用于生成公钥和私钥,之后无需再次输入密码。

3. 免密登录采用了非对称加密算法,同时使用了 SSH 协议进行加密传输,因此具有较高的安全性。

使用方法要实现 Linux 免密登录,需要遵循以下步骤:1. 在本地生成公钥和私钥:```bash $ ssh-keygen ```2. 复制公钥到远程服务器:```bash $ ssh-copy-id username@remote_host ```3. 免密登录到远程服务器:```bash $ ssh username@remote_host ```总结Linux 免密登录是一种更加安全和方便的登录方式,客户端无需输入密码即可完成登录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档