SSH免密远程登录的配置与实现

简介: 一、软件环境 操作系统:CentOS Linux release 7.4.1708 (Core) SSH版本 [root@Geeklp201 ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017 登录服务端IP:192.168.237.201 被登录服务端IP:192.168.237.202 192.168.237.203 二、问题背景 多台网络可达的服务器之间实现免密登录。

一、软件环境

操作系统:CentOS Linux release 7.4.1708 (Core)

SSH版本

[root@Geeklp201 ~]# ssh -V

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

登录服务端IP192.168.237.201

被登录服务端IP192.168.237.202 192.168.237.203

二、问题背景

多台网络可达的服务器之间实现免密登录。本例中,以192.168.237.201为登录端,在本台机器上通过SSH免输密码登录远程被登录端的192.168.237.202192.168.237.203

三、实现过程

1、把当前工作目录切换到用户目录。

[root@Geeklp201 ~]# cd ~

2、看一下当前目录有没有.ssh子目录。

[root@Geeklp201 ~]# ls -al

3、没有.ssh子目录,创建该目录或者使用ssh登录一下任意一台服务器,ssh登录时(无论登录成功与否)会自动创建该目录。也可以直接跳过此步执行第4步,执行第四步的时候也会自动创建.ssh目录,ssh-keygen生成的公钥及私钥放入该目录下。这一步也可以说是画蛇添足。

mkdir .ssh或者ssh root@192.168.237.202

4、生成相关私钥与公钥。

[root@Geeklp201 ~]# ssh-keygen -b 4096 -t rsa -C root@192.168.237.201

命令执行完成之后,在当前目录会生成id_rsaid_rsa.pub两个key文件。参数b指定key的长度,本例中指定的长度为4096。参数t指定加密算法,本例中使用的RSA加密算法。参数C可是邮件地址或域名等,会被添加到key的尾部,以示区分。

5、把生成的公钥分发到需要登录的服务器(被登录端)上。

[root@Geeklp201 .ssh]#ssh-copy-id -i id_rsa.pub root@192.168.237.202

[root@Geeklp201 .ssh]#ssh-copy-id -i id_rsa.pub root@192.168.237.203

按照提示分别输入被登录服务端的密码即可。

6、登录验证。从192.168.237.201登录192.168.237.202192.168.237.203

[root@Geeklp201 .ssh]# ssh root@192.168.237.202

[root@Geeklp201 .ssh]# ssh root@192.168.237.203

或者

[root@Geeklp201 .ssh]# ssh 192.168.237.202

[root@Geeklp201 .ssh]# ssh 192.168.237.203

登录成功,免密登录成功实现。

四、注意事项

1、公钥在向被登录端分发完成后在登录端可删除,但是私钥是不能删除的。如果删除了私钥,那么就需要输入密码才能登录成功。

2、公钥安装完成以后是可以卸载的,卸载命令为:ssh-keygen -R 192.168.237.203。

3、公钥的分发过程也可以使用scp来实现,不过没有ssh-copy-id简单、方便,但是要注意加参数i

相关文章
|
27天前
|
JavaScript 应用服务中间件 Linux
【应用服务 App Service】解决无法从Azure门户SSH登录问题
【应用服务 App Service】解决无法从Azure门户SSH登录问题
|
28天前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
26天前
|
安全 Shell Linux
如何禁止某个用户使用ssh登录
本文介绍了五种禁止用户通过SSH登录的方法:1) 修改`/etc/ssh/sshd_config`文件中的`DenyUsers`和`DenyGroups`来阻止特定用户或用户组登录;2) 将用户的默认shell设置为`/usr/sbin/nologin`或`/bin/false`以禁用其SSH访问;3) 利用PAM(可插入认证模块)通过编辑`/etc/security/sshd.conf`来限制登录权限;4) 通过编辑`/etc/hosts.deny`文件拒绝特定用户的SSH访问;5) 锁定或禁用用户账号以阻止所有类型的登录。每种方法都提供了详细的步骤指导。
60 1
|
29天前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
33 0
Github代码仓库SSH配置流程
|
1月前
|
存储 安全 测试技术
【超实用却暗藏杀机】sshpass:一键免密SSH登录的神器,为何生产环境却要敬而远之?探秘背后的安全隐患与替代方案!
【8月更文挑战第16天】sshpass 是一款便捷工具,可实现自动化SSH登录,简化脚本中的远程连接流程。通过后台自动处理密码输入,便于执行远程操作,如 `sshpass -p 'yourpassword' ssh user@remotehost`。也可结合更多SSH选项使用,例如指定私钥文件。然而,因需明文传递密码,存在较大安全隐患,不适于生产环境;推荐使用公钥认证以增强安全性。
34 4
|
21天前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
44 0
|
29天前
|
Ubuntu Shell 网络安全
【Ubuntu】配置SSH
【Ubuntu】配置SSH
40 0
|
29天前
|
安全 Linux Shell
Linux系统之间实现免密码登录(SSH无密码登录
【8月更文挑战第21天】要在Linux系统间实现SSH免密码登录,需先在源机器生成SSH密钥对,然后将公钥复制到目标机器的`.ssh/authorized_keys`文件中。可通过`ssh-keygen`命令生成密钥,并使用`ssh-copy-id`命令传输公钥。最后测试SSH连接,确保能无密码登录。若目标机器缺少相关目录或文件,需手动创建并设置适当权限。完成这些步骤后,即可实现安全便捷的免密码登录。
46 0
|
29天前
|
安全 Linux 网络安全
在Linux中,如何配置SSH以确保远程连接的安全?
在Linux中,如何配置SSH以确保远程连接的安全?
|
29天前
|
Ubuntu Linux 网络安全
在Linux中,如何禁用root用户直接SSH登录?
在Linux中,如何禁用root用户直接SSH登录?