300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > ssh登录远程服务器_设置iTerm2免密登陆ssh远程服务器

ssh登录远程服务器_设置iTerm2免密登陆ssh远程服务器

时间:2023-09-20 11:25:35

相关推荐

ssh登录远程服务器_设置iTerm2免密登陆ssh远程服务器

由于本人的日常工作原因,几乎所有时间都会在远程服务器工作,之前用的是Windows系统,使用xshell保存用户名和密码很方便,后来换了MacOS之后,虽然iTerm2很好用每次登陆都要自己输用户名和密码,一次两次还好,对于经常使用的或者需要同时开很多窗口的时候就很头疼麻烦,然后通过上网搜索终于解决了这个问题,下面就详细介绍一下。

首先cd ~/.ssh/

然后vim work.sh

然后将以下代码复制进去,保存退出

#!/usr/bin/expect -fset user usernameset host 0.0.0.0set password keysset timeout -1spawn ssh -XY $user@$hostexpect "*assword:*"send "$passwordr"interactexpect eof

将username,0.0.0.0,keys分别替换成用户名,远程地址,以及相应密码即可。后面我加的-XY是为了显示图形界面。

之后,打开iTerm2->Preferences,如下图

之后会得到如下界面:

点击+号,然后将右面Name改成任何你想改的名字,下面我圈住的地方使用Command,并将expect ~/.ssh/work.sh填入进去即可。之后新建窗口选择刚才保存好的端口即可。

但是,问题又来了,虽然这样可以顺利登录进去,但是细心的人会发现这样登录存在一个问题,就是当终端窗口改变大小时,远程服务器并不会随之改变,所显示的区域还是一开始的大小,如下所示:

比如一开始登录时终端窗口大小是这样子,为了对比明显,打开一个比较长的脚本,现在看来貌似一切正常
但是当把窗口放大后,问题就来了,会发现可工作的区域和窗口放大前是一样的,这非常影响工作效率

查找好多方法,终于找到原因所在,原来是因为设置自动登录时使用了expect,它无法检测到窗口改变,也就无法跟踪窗口,所以需要在原来代码的基础上加上如下几句:

#trap sigwinch spawnedtrap {set cols [stty columns]set cols [stty columns]stty rows $rows columns $cols < $spawn_out(slave,name)} WINCH

这个作用是可以将窗口改变的信号传送到远程服务器,最终完善的代码如下:

#!/usr/bin/expect -f#trap sigwinch spawnedtrap {set cols [stty columns]set cols [stty columns]stty rows $rows columns $cols < $spawn_out(slave,name)} WINCHset user usernameset host 0.0.0.0set password keysset timeout -1spawn ssh -XY $user@$hostexpect "*assword:*"send "$passwordr"interactexpect eof

这样就很完美啦~~~~

小帖士:

有时候远程登录服务器经常会出现如下提示,

每次都要手输yes也是件麻烦的事情,解决办法也很简单,就是修改/etc/ssh/ssh_config文件,将其中的# StrictHostKeyChecking ask 改成 StrictHostKeyChecking no就行,要用管理员身份打开呀,即sudo vim /etc/ssh/ssh_config

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。