ssh免密登录

简介: ssh免密登录
+关注继续查看

一.自动输入密码

场景:

由于多台机必须要登陆执行命令,需要使用密钥一台台登录,所以每次登陆机器的时候都需要手动输入域账号密码。密码太长且复杂,手动输入容易输错,故使用脚本来做这个事情,实现免输入密码登陆,工作效率大大提升!

解决方法:

  1. 使用 expect
  2. 使用 sshpass
  3. 结合 alfred 可以快速一键登录
  4. 也可以使用 electerm 进行登录

对于我自己而言的话,用的最爽的还是使用 sshpass+alfred 一键登录,先安装 sshpass,然后使用命令

sshpass -p 你的密码 ssh -A -g yourname@ip

登录到服务器,然后再执行脚本,部署自己的应用或者博客,登录服务器的命令用 alfred 的 workflow 来执行,方便快捷

后续使用 cicd 来部署,每次提交即可进行部署,不用登录到服务器即可部署.

二.sshpass 方式

1.安装 sshpass

sshpass 是一个实用工具,它提供了一种自动化 SSH 密码认证的方式。它允许你将密码作为命令行参数或通过环境变量传递给 SSH 命令,从而在非交互式方式下进行 SSH 登录。

使用 sshpass 可以方便地批量管理多台服务器,同时也可以将其用于自动化脚本或任务中,从而减少手动输入密码的繁琐。需要注意的是,使用 sshpass 可能会存在一定的安全风险,因此在使用时需要谨慎考虑。

不能使用命令安装,会报错,使用源码安装.

使用方式:

sshpass -p 'password' ssh user@host

其中 -p 参数指定密码,user@host 是要登录的目标服务器地址和用户名。使用上述命令后,sshpass 将会自动完成 SSH 登录过程,而无需手动输入密码。

除了使用命令行参数外,你也可以将密码保存在环境变量中,然后通过 $ENV_VAR 的方式引用它,例如:

export SSHPASS='password'

sshpass -e ssh user@host

其中 -e 参数指示 sshpass 使用环境变量传递密码。在这种方式下,你需要事先将密码保存在 $SSHPASS 环境变量中。

需要注意的是,使用 sshpass 存在一定的安全风险,因为密码会以明文方式传递,容易被恶意程序截获。因此,在使用 sshpass 时,应尽可能避免将密码保存在脚本中,或者将其保存在安全加密的文件中。另外,如果可能的话,建议使用 SSH 公钥认证方式来代替密码认证。

2.源码下载

#源码下载

https://sourceforge.net/projects/sshpass/

3.安装过程

#解压缩

 

#安装

cd sshpass-1.08

 

#执行配置文件

./configure

 

#编译

make

 

#编译安装

make install

4.验证

#查看版本

sshpass -V

 

#登录服务器

sshpass -p 你的密码 ssh -A -g yourname@ip

三.expect 方式

首先我们创建以一个文本文件,命名为 proxy.expect,内容如下:

1.脚本

使用脚本一键登录服务器

#!/usr/bin/expect

 

# 设置超时时间,单位秒

set timeout 10

 

# 主要功能是给ssh运行进程加个壳,用来传递交互指令

# ssh -A 是转发密钥设置,用于有堡垒机的场景,一般情况下不需要

spawn ssh -A root@120.79.36.53

 

# 判断上次输出结果里是否包含 Password: 的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的 10秒

expect "Password:"

 

# 发送密码 \r 表示字符串结束

send "xxx.\r"

 

# 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。

# 如果没有这一句登录完成后会退出,而不是留在远程终端上。

interact

2.执行

expect proxy.expect


相关文章
|
20天前
|
Shell 网络安全 数据安全/隐私保护
debian安装ssh(傻瓜教程)+证书免密登录
debian安装ssh(傻瓜教程)+证书免密登录
26 0
|
1月前
|
Shell Linux 网络安全
ssh 主机之间免密配置脚本
ssh 主机之间免密配置脚本
19 0
|
2月前
|
Linux 网络安全
三步实现Linux下主机之间SSH免密登录
三步实现Linux下主机之间SSH免密登录
|
3月前
|
网络安全 开发工具 数据安全/隐私保护
GitHub不再支持密码验证解决方案:SSH免密与Token登录配置
今天提交代码,push到GitHub上,突然出现这个问题。 remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: unable to acce
|
4月前
|
算法 Shell Linux
linux实现SSH免密登录设置,以及shell脚本实现
linux实现SSH免密登录设置,以及shell脚本实现
144 0
|
4月前
|
缓存 网络协议 测试技术
一招教你快速学会Linux ssh连接免密登录
#编辑配置文件,在最后添加如下内容: AllowUsers student1 student2 #重启ssh服务后生效
119 0
|
4月前
|
算法 安全 网络协议
ssh工作流程及其原理——ssh免密登录
ssh工作流程及其原理——ssh免密登录
|
4月前
|
安全 Unix Linux
SSH免密登录详细操作步骤
SSH免密登录详细操作步骤
119 0
|
5月前
|
存储 缓存 安全
linux中ssh免密登录及HTTP详解
linux中ssh免密登录及HTTP详解
75 0
linux中ssh免密登录及HTTP详解
|
5月前
|
Shell 网络安全 开发工具
Github SSH免密登录
通过 ssh 连接的好处在于不必每次都要验证 GitHub 的账号密码,减少了一些繁琐的操作,同时可以提高 pull/push 的效率,特别是在网络比较差劲,无法通过 http 或 https 有效连接到 GitHub 时,ssh 就是一个不错的选择。
70 0
Github SSH免密登录
推荐文章
更多