实现ssh的无密码登录

简介: 这里所说的ssh是指OpenSSH SSH客户端,是用于登录远程主机,并且在远程主机上执行命令。它的目的是替换rlogin和rsh,同时在不安全的网络之上,两个互不信任的主机之间,提供加密的、安全的通信连接。X11连接和任意TCP/IP端口均可以通过此安全通道转发。

这里所说的ssh是指OpenSSH SSH客户端,是用于登录远程主机,并且在远程主机上执行命令。它的目的是替换rlogin和rsh,同时在不安全的网络之上,两个互不信任的主机之间,提供加密的、安全的通信连接。X11连接和任意TCP/IP端口均可以通过此安全通道转发。


在RedHat 6.1中,默认安装的OpenSSL是一种比较常见的SSH服务端和客户端软件,默认端口是22。


SSH服务端其实是一个守护进程(daemon),在后台运行并相应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。


SSH客户端程序包括ssh程序,及scp(远程拷贝)、slogin(远程登录)、sftp(安全文件传输)等其他的应用程序。


在有些情况下,需要实现ssh的无密码登录,或者称为免密码登录。比如:Hadoop的伪分布式模式部署、完全分布式模式部署。


配置

有两台主机:主机A:192.168.1.132,主机B:192.168.1.133,需要配置主机A无密码登录主机A、主机B。


生成私钥、公钥

在主机A上:


$ cd ~/.ssh(如果没有改文件夹,直接创建一个)
$ ssh-keygen -t rsa

上面的ssh-keygen命令中,参数-t是生成密钥的方式,有三种方式:协议版本1的rsa1、协议版本2的rsa和dsa。通常选rsa或dsa,既安全,又省事。


这个时候会打印一些执行结果及交互操作,一路回车即可。


Generating public/private rsa key pair.
Enter file in which to save the key (/home/lxh/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/lxh/.ssh/id_rsa.
Your public key has been saved in /home/lxh/.ssh/id_rsa.pub.
The key fingerprint is:
2e:34:7c:3a:be:e4:3b:93:2f:1d:32:4f:2d:fe:13:a1 lxh@master
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|     .    .      |
|      + So .     |
|     .o=E o      |
|      =O.o .     |
|     +=o+ .      |
|      =B....     |
+-----------------+

生成存放RSA/DSA的公钥

直接复制生成的id_rsa.pub文件即可。


$ cp id_rsa.pub authorized_keys
$ chmod 600 authorized_keys

按理说此时就可以无密码登录本机了,即通过命令:


$ ssh localhost

第一次需要输入一个yes,因为需要在第一次登录该主机时记录有用户登录,之后就不会出现了。


复制公钥

然后将公钥文件authorized_keys拷贝到主机B的相同位置上。


$ scp authorized_keys 192.168.1.133:~/.ssh

因为已经在主机A上修改过authorized_keys的权限,一般主机B上也是600格式,如果不是,就修改主机B上的authorized_keys文件权限为600。


$ chmod 600 authorized_keys

一般情况下,可以通过主机A无密码登录主机A和主机B了。


FQA

登录时出现“Agent admitted failure to sign using the key.”

在~/.ssh目录中执行


$ ssh-add

出现下面的信息,就成了:


Identity added: /home/lxh/.ssh/id_rsa (/home/lxh/.ssh/id_rsa)

如果提示下面的信息:


Could not open a connection to your authenticationh agent

就执行:


ssh-agent bash

没有错误信息,但需要输入密码登录

需要查看一下.ssh目录和authorizedkeys文件的权限,需要.ssh目录的权限为700,authorizedkeys文件的权限为600。如果主机A连接主机B,就在主机B上执行:


$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/authorized_keys

ssh代理未开启

通过命令查看ssh代理是否开启


$ ps -ef|grep ssh-agent

如果开启了,直接kill掉,然后启动ssh代理。


$ ssh-agent

如果还是不行,就重启ssh服务:


# service sshd restart(需要root权限)


目录
相关文章
|
2月前
|
JavaScript 应用服务中间件 Linux
【应用服务 App Service】解决无法从Azure门户SSH登录问题
【应用服务 App Service】解决无法从Azure门户SSH登录问题
|
2月前
|
机器学习/深度学习 存储 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中的文件
|
2月前
|
安全 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) 锁定或禁用用户账号以阻止所有类型的登录。每种方法都提供了详细的步骤指导。
84 1
|
2月前
|
存储 安全 测试技术
【超实用却暗藏杀机】sshpass:一键免密SSH登录的神器,为何生产环境却要敬而远之?探秘背后的安全隐患与替代方案!
【8月更文挑战第16天】sshpass 是一款便捷工具,可实现自动化SSH登录,简化脚本中的远程连接流程。通过后台自动处理密码输入,便于执行远程操作,如 `sshpass -p 'yourpassword' ssh user@remotehost`。也可结合更多SSH选项使用,例如指定私钥文件。然而,因需明文传递密码,存在较大安全隐患,不适于生产环境;推荐使用公钥认证以增强安全性。
53 4
|
2月前
|
安全 Shell 网络安全
告别繁琐密码,一键解锁GitHub高效秘籍!SSH配置大揭秘,让你的代码托管之旅飞起来!
【8月更文挑战第4天】在使用GitHub时,频繁输入账号密码颇为不便。采用SSH协议可提升安全性并简化流程。本文以问答形式指导你快速配置GitHub SSH:了解SSH优势、学会生成与添加SSH密钥及测试连接。通过简单的步骤,即可实现无缝代码推送与拉取,享受高效、安全的开发体验。记得保护好私钥并根据需要设置多个密钥对。
45 7
|
2月前
|
安全 Linux Shell
Linux系统之间实现免密码登录(SSH无密码登录
【8月更文挑战第21天】要在Linux系统间实现SSH免密码登录,需先在源机器生成SSH密钥对,然后将公钥复制到目标机器的`.ssh/authorized_keys`文件中。可通过`ssh-keygen`命令生成密钥,并使用`ssh-copy-id`命令传输公钥。最后测试SSH连接,确保能无密码登录。若目标机器缺少相关目录或文件,需手动创建并设置适当权限。完成这些步骤后,即可实现安全便捷的免密码登录。
57 0
|
2月前
|
Ubuntu Linux 网络安全
在Linux中,如何禁用root用户直接SSH登录?
在Linux中,如何禁用root用户直接SSH登录?
|
3月前
|
安全 Linux 网络安全
|
3月前
|
Shell 网络安全 数据安全/隐私保护
MacOS Sonoma14.2.1系统SSH免密登录
【7月更文挑战第9天】在MacOS Sonoma 14.2.1中设置SSH免密登录,包括:1) 使用`ssh-keygen`生成RSA密钥对;2) 使用`ssh-copy-id`将公钥传到远程主机;3) 用`ssh-add --apple-use-keychain`添加私钥到ssh-agent,并为重启后自动添加配置自动化脚本;4) 可选地,编辑`~/.ssh/config`设置别名简化登录。确保远程主机的`.ssh/authorized_keys`文件权限为600。
122 4
|
2月前
|
存储 安全 Linux
说到Linux安全,SSH限制IP登录绕不开这3种方法!
说到Linux安全,SSH限制IP登录绕不开这3种方法!