linux实现SSH免密登录设置,以及shell脚本实现

简介: linux实现SSH免密登录设置,以及shell脚本实现

分享/朱季谦

最近在搭建linux集群,做了SSH免密登录的设置,正好把过程记录一下:

一.用搭建好的两台虚拟机做演示,A机器:192.168.200.129,B机器:192.168.200.128

二.分别在两台机器上执行以下步骤:

1.使用root登录A服务器:su – root

 

2.在登录的A服务器上通过指定加密算法指令ssh-keygen -t rsa来生成秘钥,执行完该指令一直回车即可。

说明:(1)ssh-keygen –t rsa是指定加密的算法是rsa

         (2)(/root/.ssh/id_rsa)是保存秘钥的路径

       (3)/root/.ssh/id_rsa.pub是生成的公钥

 

 

3.将公钥传到B服务器,以root用户登录B机器,回车后,当跳出yes/no的选项后,选择yes,然后输入B机器的密码,出现下面截图类型的信息,就证明设置成功了,这时可以通过ssh root@192.168.200.128测试下,正常情况下可免密登录到B机器上

A机器传给B机器的秘钥存放在/root/.ssh/目录下,进入到这个目录,可以看到:

 

完成以上步骤,就可以在A机器上免密码SSH登录B机器了,这时若要互相免密,可在B机器上把以上步骤重复一遍,但B机器ssh-copy-id root@ip的ip则是A机器的了。

以上步骤,可以通过shell脚本来自动化操作互免。

#!/bin/bashset-e  ssh-keygen() {
      yum -y install expect
      /usr/bin/expect <<-EOF
set timeout 60      spawn ssh-keygen
      expect {
"Enter file in which to save the key (/root/.ssh/id_rsa):" { send "\r"; exp_continue}
"Overwrite (y/n)?" { send "n\r" }
"Enter passphrase (empty for no passphrase):" { send "\r"; exp_continue} 
"Enter same passphrase again:" { send "\r"}
     }
     expect eof
     EOF
echo"" }
 ssh-copy(){
     /usr/bin/expect <<-EOF
set timeout -1     spawn ssh-copy-id $1     expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$2\r" }
     }
     expect eof
     EOF
 }
 ssh-keygen
 ssh-copy "root@192.168.200.128"

 

目录
相关文章
|
3天前
|
分布式计算 Hadoop 网络安全
杨校老师课堂之集群内SSH免密登录功能配置
杨校老师课堂之集群内SSH免密登录功能配置
13 0
|
1天前
|
安全 Linux Shell
【Linux基础】SSH登录
安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。 SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
18 6
|
2天前
|
Shell Linux 网络安全
Linux怎样在使用ssh 链接时就指定gcc 的版本
Linux怎样在使用ssh 链接时就指定gcc 的版本
16 7
|
4天前
|
监控 安全 Linux
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
|
5天前
|
安全 Shell Linux
探索Linux命令chsh:更改用户的默认shell
`chsh`是Linux命令,用于更改用户的默认登录shell。它涉及用户环境配置和系统安全,允许用户选择更适合自己的shell以提升效率。命令有交互式选项和参数如`-s`来指定新shell。在使用时要注意新shell的可执行性、权限问题及选择合适的shell。例如,要更改为bash,用户可运行`chsh`后按提示操作,而root用户能用`sudo chsh -s /bin/zsh john`为用户`john`设定zsh。在更改前,确认shell路径、权限,并了解不同shell的特点。
|
6天前
|
监控 Shell Linux
Linux的Shell脚本详解
Linux的Shell脚本详解
|
6天前
|
Linux 网络安全
|
4天前
|
存储 安全 Unix
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
|
4天前
|
Ubuntu Linux Shell
Linux logname命令:揭秘当前登录用户的身份
`logname`命令在Linux中显示当前登录用户的用户名。它读取`/var/run/utmp`或`/etc/utmp`文件获取信息,简单直接,数据可靠。适用于多种Linux发行版。在终端输入`logname`即可查看用户名,也可在脚本中使用以动态调整内容。注意,`logname`不考虑`LOGNAME`或`USER`变量,适用于本地登录,无权限问题。在脚本中应处理无对应条目的情况。
|
4天前
|
网络协议 安全 Linux
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac