使用 autossh 实现 SSH 免密登陆

前言

使用 autossh 在 Linux & Mac 实现 SSH 免密登陆

安装 autossh

执行如下命令:

1
2
$ git clone https://github.com/FeeiCN/autossh.git --depth=1
$ sudo cp autossh/autossh /usr/local/bin/

配置 autossh

创建 .autosshrc 文件:

1
$ vim ~/.autosshrc

编辑内容:

1
2
3
4
5
6
server_name|ip|user|password|port|is_bastion
// example
堡垒机|192.168.0.1|hackerdom|123456|22|1
阿里云|192.168.0.2|mayun|123456|22|0
腾讯云|192.168.0.3|mahuateng|123456|22|0

使用

在终端输入如下命令:

1
$ autossh

会显示如下界面,之后输入服务器序号即可:

1
2
3
4
5
6
7
8
9
10
11
12
$ autossh
############################################################
# [AUTO SSH] #
# #
# #
# [1] 堡垒机 - 192.168.0.1:hackerdom #
# [2] 阿里云 - 192.168.0.2:mayun #
# [3] 腾讯云 - 192.168.0.3:mahuateng #
# #
# #
############################################################
Server Number:(Input Server Num)

快速登陆服务器(例如 阿里云):

1
$ autossh 2

使用 sudo 权限登陆服务器

1
$ autossh 2 sudo

堡垒机操作

1
2
$ autossh 1 192.168.1.1
$ autossh 1 192.168.1.1 sudo

踩坑

在使用过程中发现,autossh 登陆之后使用 rzsz 上传下载文件的时候会出现假死状态,于是查看了 autossh 源码发现是使用 expect 来实现自动化登陆,经过一番寻找之后发现一个解决方案,在脚本之前增加如下命令:

1
export LC_CTYPE=en_US

缺点是远程机器里面的中文可能会乱码。

----本文结束 感谢您的阅读----