如何在linux中如何配置ssh免密码登录

如何在linux中如何配置ssh免密码登录,第1张

首先需要在服务器端设置/etc/ssh/sshd_config
# vim /etc/ssh/sshd_config
修改如下两行为yes。其实大多数情况下不用修改,默认就是yes。
RSAAuthentication yes
PubkeyAuthentication yes
(1) 如果客户机和服务器都是Linux机器,那么我们使用下面的方法:(后面第2节会提到怎么在Windows下使用Putty生成密钥对)
我们需要在客户端生成RSA密钥对。使用ssh-keygen命令
# ssh-keygen -t rsa
参数t的意思是type,后面跟着加密类型,这里我们是rsa。
然后会提示你输入密钥保存完成文件名,这里我们需要使用默认的id_rsa,之后才能正常才能登录。如果你生成的密钥作为其他用处,那么可以命名为其他名称:
Generating public/private rsa key pair
Enter file in which to save the key (/home/cake/ssh/id_rsa):
之后会提示你输入一个passphrase,我们这里可以留空,这样我们登录的时候就不许输入密码。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
然后会提示你密钥生成成功。这是你的私钥保存为~/ssh/id_rsa,你的公钥是~/ssh/id_rsapub
我们现在需要做的是,把id_rsapub的内容,添加的服务器端的~/ssh/autherized_keys文件最后。
你可以把这个文件上传到服务器端,然后使用命令:
# cat id_rsapub >> ~/ssh/autherized_keys
到这里就完成了。
(2) 在Windows下使用Putty生成密钥对:
Putty的安装目录下有个puttygenexe程序,我们运行这个程序。
之后点击Generate,开始生成密钥对。我们需要根据提示,在指定方框内随机滑动鼠标。这是为了根据鼠标轨迹,产生一些随机数据。
之后生成结束,我们点击Save Private Key将私钥存放在某个目录中。然后赋值最上面文本框中的全部内容,粘贴到Linux服务器端的autherized_key的最后。
我们现在可以关闭这个小程序。
现在打开Putty,在左边的选项中,选择Conneciton–SSH–Auth,在Private key file for authentication中,选择刚才保存的私钥路径就可以了。
到此位置,Putty也可以不用密码登录了。

比如:Jenkins构建时都是以jenkins用户进行 *** 作,所以要以jeknins用户来配置免密钥登录。
su - root

ssh-keygen -t rsa

A
[sjfuser@jenkins ~]$ ll /root/ssh/
-rw------- 1 sjfuser sjfuser 1671 4月 19 05:10 id_rsa
-rw-r--r-- 1 sjfuser sjfuser 398 4月 19 05:10 id_rsapub
-rw-r--r-- 1 sjfuser sjfuser 417 4月 19 05:08 known_hosts
B
-rw------- 1 root root 1217 Apr 21 10:46 /root/ssh/authorized_keys

将此公钥写入任何一台远程主机的/root/ssh/authorized_keys后,便可通过密钥登陆到远程主机。
任何一台主机,拿到该密钥id_rsa后,便可登陆写入了该公钥id_rsapub的主机。

如果添加指纹的时候提示添加失败,是因为你以前添加过了这个ip的指纹。
解决办法:将ssh目录的known_hosts文件删除掉。也可以打开这个文件把对应ip的那条记录删除。

>SSH 是开源的,是用于远程登录的最为可靠的网络协议。系统管理员用它来执行命令,以及通过 SCP 协议在网络上向另一台电脑传输文件。通过配置 SSH 免密码登录,你可以享受到如下的便利:用脚本实现日常工作的自动化。增强 Linux 服务器的安全性。这是防范虚拟专用服务器(VPS)遭受暴力破解攻击的一个推荐的方法,SSH 密钥单凭暴力破解是几乎不可攻破的。什么是 ssh-keygenssh-keygen 是一个用来生成、创建和管理 SSH 认证用的公私钥的工具。通过 ssh-keygen 命令,用户可以创建支持SSH1 和 SSH2 两个协议的密钥。ssh-keygen 为 SSH1 协议创建 RSA 密钥,SSH2 则可以是 RSA 或 DSA。什么是 ssh-copy-idssh-copy-id 是用来将本地公钥拷贝到远程的 authorized_keys 文件的脚本命令,它还会将身份标识文件追加到远程机器的 ~/ssh/authorized_keys 文件中,并给远程主机的用户主目录适当的的权限。SSH 密钥SSH 密钥为登录 Linux 服务器提供了更好且安全的机制。运行 ssh-keygen 后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。在 CentOS 和 RHEL 上设置免密码登录 SSH以下步骤在 CentOS 5/6/7、RHEL 5/6/7 和 Oracle Linux 6/7 上测试通过。节点1 : 19216809 节点2 : 192168l10步骤1 :测试节点1到节点2的连接和访问:[root@node1 ~]# ssh root@192168010The authenticity of host '192168010 (192168010)' can't be establishedRSA key fingerprint is 6d:8f:63:9b:3b:63:e1:72:b3:06:a4:e4:f4:37:21:42Are you sure you want to continue connecting (yes/no) yesWarning: Permanently added '192168010' (RSA) to the list of known hostsroot@192168010's password:Last login: Thu Dec 10 22:04:55 2015 from 19216801[root@node2 ~]#步骤二:使用 ssh-key-gen 命令生成公钥和私钥,这里要注意的是可以对私钥进行加密保护以增强安全性。[root@node1 ~]# ssh-keygenGenerating public/private rsa key pairEnter 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_rsaYour public key has been saved in /root/ssh/id_rsapubThe key fingerprint is:b4:51:7e:1e:52:61:cd:fb:b2:98:4b:ad:a1:8b:31:6d root@node1ehowstufflocalThe key's randomart image is:+--[ RSA 2048]----+ ++ o o o o o o o + S o E ooo = ooo oo +-----------------+步骤三:用 ssh-copy-id 命令将公钥复制或上传到远程主机,并将身份标识文件追加到节点2的 ~/ssh/authorized_keys 中:[root@node1 ~]# ssh-copy-id -i ~/ssh/id_rsapub 192168010root@192168010's password:Now try logging into the machine, with "ssh '192168010'", and check in:ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting步骤四:验证免密码 SSH 登录节点2:[root@node1 ~]# ssh root@192168010Last login: Sun Dec 13 14:03:20 2015 from >服务器正常,PING也能PING通。但是就是SSH连不上啊,出现这种问题,最大的可能就是防火墙没有关闭。解决方法:
1、开启SSH以root用户登录Linux,打开终端,运行:/etc/initd/sshdrestrat。
2、关闭防火墙。
3、在终端运行setup。
4、选择firewall回车
5、按tab键切换到disablede项,然后按空格键选择,然后再按tab键切换到ok,按空格件选择。
6、按tab键切换。

A:主机shell-com             B主机:NBU-master1-com

ssh-keygen -t rsa

需要按下三次回车,这个时候会在~/ssh文件下生成文件
ssh-copy-id ~/ssh/id_rsapub root@1921681102

[root@shell1-com ~]# ssh-copy-id -i ~/ssh/id_rsapub root@1921681102

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/ssh/id_rsapub"

/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 keys

root@1921681102's password:

Now try logging into the machine, with: "ssh 'root@1921681102'"

and check to make sure that only the key(s) you wanted were added

[root@shell1-com ~]# ssh root@1921681102

Last failed login: Fri Jun 15 10:15:25 CST 2018 from 192168231 on ssh:notty

There was 1 failed login attempt since the last successful login

Last login: Fri Jun 15 10:10:03 2018 from 192168231

[root@nbu-master1 ~]# exit

logout

Connection to 1921681102 closed

这样就可以实现A主机登录B主机免密码。

仅供参考

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。 SSH协议可以用来进行远程控制, 或在计算机之间传送文件。

OpenSSH连接(登录)手机

1 在cydia 中安装OpenSSH 包

2 打开手机wifi设置

3 连接wifi

4 读取ip地址

5 打开终端

6 运行命令 ssh root@你的ip

7 输入密码: alpine (可以自定义)

ssh 到你的 iPhone,修改 root/mobile 两个权限下的密码。默认密码是 alpine,使用 passwd 命令修改密码。

修改 root 权限密码

likid$ ssh root@19216818167 // use root role to login

The authenticity of host '19216818167 (19216818167)' can't be established

RSA key fingerprint is SHA256:xxx

Are you sure you want to continue connecting (yes/no) yes

Warning: Permanently added '19216818167' (RSA) to the list of known hosts

root@19216818167's password: // enter original passwordalpine

iPhone:~ root# passwd // change password command

Changing password for root

New password: // enter your new password

Retype new password: // again

iPhone:~ root#exit // logout

logout

Connection to 19216818167 closed

修改 mobile 权限密码

Likid$ ssh mobile@19216818167 //use mobile role to login

mobile@19216818167's password: // enter original passwordalpine

iPhone:~ mobile$ su root

Password:

iPhone:/var/mobile root# cd 

iPhone:~ root# passwd mobile

Changing password for mobile

New password:

Retype new password:

iPhone:~ root#exit

logout

Connection to 19216818167 closed

SSH公钥登录的前提是已经登录过SSH

SSH公钥登录的原理

Mac电脑将自己的公钥发给远程的手机

手机随机生成的一段字符串, 发给Mac电脑

Mac电脑利用私钥加密字符串

手机利用公钥解密字符串

SSH公钥登录步骤:

1 cd  ~/ssh 目录下 (ls 查看当前路径下文件)

Snip20180602_1png

2 ssh-keygen 创建RSA 密钥

ssh-keygen

使用上述命令创建 RSA的公钥和私钥

输入命令之后, 一路回车就可以, 生成下图中两个私钥 id_rsa 和公钥 id_rsapub

生成密钥

3 ssh-copy-id root@1921681102 拷贝密钥到服务器

ssh-copy-id root@1921681102

这里的ip是你手机wifi的ip地址, 会将文件拷贝到 ~/ssh/ 目录下

中间会需要你输入链接服务器(手机)的密码

密码默认是: alpine (在OpenSSH源中可以看到)

5 ssh root@1921681102 登录SSH

ssh root@1921681102

苹果有一个服务,叫usbmuxd,这个服务主要用于在USB协议上实现多路TCP连接

USB 登录需要端口映射,目前有两种方式映射

Python脚本 tcprelay 端口映射:

# 将本地的12345端口映射到设备的TCP端口22# -t 表示能够同时支持多个SSH连接HanDaDaMacBook-Air:~ HanDaDa$python tcprelaypy -t 22:12345

Iproxy端口映射

# 安装libimobiledevice工具 或者usbmuxd

HanDaDaMacBook-Air:~ HanDaDa$brew install libimobiledevice 

或者

HanDaDaMacBook-Air:~ HanDaDa$brew install usbmuxd 

# 映射端口HanDaDaMacBook-Air:~ HanDaDa$iproxy 12345 22

以上两种方式成功后皆可通过以下SSH连接登录手机

# ssh连接本地的端口12345,由于做了端口映射,所以会通过usb连接对面设备的22端口。# 127001 是IP地址# -p 表示端口号HanDaDaMacBook-Air:~HanDaDa$ssh-p12345root@127001

!!!注意:要想保持端口映射状态,不能终止此命令行(如果要执行其他终端命令行,请新开一个终端界面),不一定非要10010端口,只要不是保留端口就行

端口映射完毕后,以后如果想跟iPhone的22端口通信,直接跟Mac本地的10010端口通信就可以了

新开一个终端界面,SSH登录到Mac本地的12345端口(以下方式2选1)

ssh root@localhost -p 12345

ssh root@127001 -p 12345

localhost是一个域名,指向的IP地址是127001,本机虚拟网卡的IP地址

usbmuxd会将Mac本地10010端口的TCP协议数据,通过USB连接转发到iPhone的22端口
也可以用itnl工具来实现端口转发

wangguanxiao-2:~ apple$ itnl --iport 22 --lport 10010

[INFO]Waiting for new TCP connection on port 10010

[INFO]Waiting for device

[INFO]Device connected: a7aee83045805b75336d38faec08a3b73b6d49d1 - Ignoring(non-USB)

[INFO]Device connected: a0370fce4f5755310d2a26b020b989c59d9780aa - Ignoring(non-USB)

[INFO]Device connected: a0370fce4f5755310d2a26b020b989c59d9780aa

>1Linux下生成密钥
ssh-keygen的命令手册,通过”man ssh-keygen“命令:
通过命令”ssh-keygen -t rsa“
生成之后会在用户的根目录生成一个 “ssh”的文件夹
进入“ssh”会生成以下几个文件
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsapub :生成的公钥文件
know_hosts : 已知的主机公钥清单
如果希望ssh公钥生效需满足至少下面两个条件:
1) ssh目录的权限必须是700
2) ssh/authorized_keys文件权限必须是600
2远程免密登录
原理图:
常用以下几种方法:
21 通过ssh-copy-id的方式
命令: ssh-copy-id -i ~/ssh/id_rsaput <romte_ip>
举例:
[root@test ssh]# ssh-copy-id -i ~/ssh/id_rsapub 19216891135
root@19216891135's password:
Now try logging into the machine, with "ssh '19216891135'", andcheck in:
ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting
[root@test ssh]# ssh root@19216891135
Last login: Mon Oct 10 01:25:49 2016 from 19216891133
[root@localhost ~]#
常见错误:
[root@test ~]# ssh-copy-id -i~/ssh/id_rsapub 19216891135
-bash: ssh-copy-id: command not found //提示命令不存在
解决办法:yum -y installopenssh-clients
22 通过scp将内容写到对方的文件中
命令:scp -p~/ssh/id_rsapub root@<remote_ip>:/root/ssh/authorized_keys
举例:
[root@test ssh]# scp -p ~/ssh/id_rsapubroot@19216891135:/root/ssh/authorized_keys
root@19216891135's password:
id_rsapub 100% 408 04KB/s 00:00
[root@test ssh]#
[root@test ssh]#
[root@test ssh]#
[root@test ssh]# ssh root@19216891135
Last login: Mon Oct 10 01:27:02 2016 from 19216891133
[root@localhost ~]#
也可以分为两步 *** 作:
$ scp ~/ssh/id_rsapubroot@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key>>~/ssh/authorized_keys //将内容追加到authorized_keys文件中,不过要登录远程服务器来执行这条命令
23 通过Ansible实现批量免密
231 将需要做免密 *** 作的机器hosts添加到/etc/ansible/hosts下:
[Avoid close]
19216891132
19216891133
19216891134
232 执行命令进行免密 *** 作
ansible<groupname> -m authorized_key -a "user=root key='{{lookup('file','/root/ssh/id_rsapub') }}'" -k
示例:
[root@test sshpass-105]# ansible test -m authorized_key -a"user=root key='{{ lookup('file','/root/ssh/id_rsapub') }}'" -k
SSH password: ----->输入密码
19216891135 | success >> {
"changed": true,
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArZI4kxlYuw7j1nt5ueIpTPWfGBJoZ8Mb02OJHR8yGW7A3izwT3/uhkK7RkaGavBbAlprp5bxp3i0TyNxa/apBQG5NiqhYO8YCuiGYGsQAGwZCBlNLF3gq1/18B6FV5moE/8yTbFA4dBQahdtVP PejLlSAbb5ZoGK8AtLlcRq49IENoXB99tnFVn3gMM0aX24ido1ZF9RfRWzfYF7bVsLsrIiMPmVNe5KaGL9kZ0svzoZ708yjWQQCEYWp0m+sODbtGPC34HMGAHjFlsC/SJffLuT/ug/hhCJUYeExHIkJF8OyvfC6DeF7ArI6zdKER7D8M0SMWQmpKUltj2nltuv3w== root@localhostlocaldomain",
"key_options": null,
"keyfile": "/root/ssh/authorized_keys",
"manage_dir": true,
"path": null,
"state": "present",
"unique": false,
"user": "root"
}
[root@test sshpass-105]#
24 手工复制粘贴的方式
将本地id_rsapub文件的内容拷贝至远程服务器的~/ssh/authorized_keys文件中


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12947314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存