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"

 

目录
相关文章
|
6月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
399 146
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
714 3
Linux系统初始化脚本
|
7月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
613 10
|
7月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
629 2
|
Ubuntu Linux 网络安全
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
本文介绍了Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录。
4152 1
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
|
11月前
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
569 24
|
存储 Linux 网络安全
Linux版百度网盘丨直接在服务器SSH命令行中使用百度云,轻松解决数据传输和分享难题
Linux版百度网盘丨直接在服务器SSH命令行中使用百度云,轻松解决数据传输和分享难题
10809 2
|
安全 Linux 网络安全
百度搜索:蓝易云 ,Linux Debian11服务器安装SSH,创建新用户并允许SSH远程登录,及SSH安全登录配置!
这些步骤提供了在Debian 11服务器上安装SSH,创建新用户并允许SSH远程登录以及进行SSH安全登录配置的指南。请确保按照步骤操作,并根据您的需求进行必要的修改。
572 0
|
Web App开发 缓存 JavaScript
【开发工具】【windows】Visual Studio Code(VS Code)远程Linux服务器环境搭建——SSH篇
【开发工具】【windows】Visual Studio Code(VS Code)远程Linux服务器环境搭建——SSH篇
1585 0
【开发工具】【windows】Visual Studio Code(VS Code)远程Linux服务器环境搭建——SSH篇
|
安全 Linux Shell
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
1954 0

热门文章

最新文章