ssh免密码登录3种解决方法

前言

如果需要远程管理几个ssh服务器,输入不输入密码都无所谓,甚至都能背下来密码。当你要管理的ssh 多达几十个时,就不想输入密码啦。这里只是记录本人的使用习惯,不一定是最佳解决方案。

方式一:专门的ssh软件自带记住密码功能

这类的软件有很多,我使过很多款,下面两款值得推荐。

xshell

在这里插入图片描述

windows下推荐使用
下载地址:
https://www.netsarang.com/zh/free-for-home-school/
推荐理由:

  • 个人版本免费使用
  • 功能强大,操作简单
  • 中文界面

不足之处:
在xshell中使用vim体验不太好,首先鼠标不支持,不知道是否有相关设置,没有深入研究过。

Termius

在这里插入图片描述

https://termius.com/
推荐理由:

  • 多平台支持:Windows,macOS,Linux,android,iOS都支持
  • 同时支持sftp
  • vim支持很好,支持鼠标操作,真彩显示
  • UI比较好,支持的主题很多。

不足之处:

  • 收费,这影响比较大
  • Windows下版本无法自定义字体,这样一个好看的字体无法使用。SpaceVim中的一体字体图标就显示不出来了

方式二:ssh密钥登录

因为个人比较喜欢iTerm中的一些特性,所以更倾向于使用iTerm来ssh。一开始我就是直接敲命令输入密码的,后来发现使用密钥免密码登录非常方便,就基本都使用密钥这种方式连接ssh 了。

使用方法:
《Mac使用ssh连接远程服务器免密码登录》
https://blog.csdn.net/lxyoucan/article/details/112527301
此教程也适应与Linux,几乎一样的。

大部分服务器都可以使用密钥免密码登录,我在工作中遇到过一种通过堡垒机连接ssh的方式,并不支持密钥登录。

扫描二维码关注公众号,回复: 12924218 查看本文章

方式三:expect自动输入密码

有些有堡垒机的服务器,无法上传密钥,怎么实现免密登录呢?

expect就是用来做交互用的,基本任何交互登录的场合都能使用,但是需要安装expect包。
做如下操作,
创建一个脚本

vim autossh.sh

增加如下内容:

#!/usr/bin/expect
# 解决vim行错乱
trap {
    
    
 set rows [stty rows]
 set cols [stty columns]
 stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH
# 设定超时时间为30s
set timeout 30
# spawn是 expect语句,执行命令前要加spawn
# 运行ssh ip或者域名地址  准备连接服务器
spawn ssh sshserver
# 交互获取返回了Password:关键字
expect "Password:"
# 发送mima 到控制台,注意\r不是密码的一部分
send "mima\r"
# 执行完留在远程控制台,不加这句执行完后返回本地控制台
interact

增加执行权限

chmod +x  autossh.sh

运行脚本:

./autossh.sh

expect跟bash类似,所以首先要有#!/usr/bin/expect,运行脚本时要使用expect file不能是sh file了。
Mac下默认是:#!/usr/bin/expect,Linux下可能是#!/bin/expect 主要看你的安装位置了。可以使用which expect查询一下。

这样就可以不输入密码直接登录了。

如果觉得每次运行这个脚本麻烦,就加个好记的别名,放到环境变量里就行了。

vim ~/.zshrc

加入下面一行

alias sa='/Users/username/.ssh/a.sh'

使环境变量立即生效。

source ~/.zshrc

这样就可以使用sa这个简单命令来免密码登录你的ssh远程服务器了。

参考

https://blog.csdn.net/zhangjikuan/article/details/51105166
https://www.jianshu.com/p/731a2c0f1c4c

猜你喜欢

转载自blog.csdn.net/lxyoucan/article/details/115064880
今日推荐