情景
在实习期间,我需要连接公司的开发机做日常的开发项目,但是我需要先设置一个环境变量USER_NAME
然后进入我自己的个人文件夹。
在windows上这是比较简单就能实现的,只要用securyCRT启动时附带启动脚本就可以实现建立ssh链接后,在远程机执行命令
。
探究
如果我们使用
1 | ssh 1@2.com -p 22 'pwd' |
电脑会进行ssh连接,连接成功后执行pwd命令返回当前目录,然后会自动退出
!
但是纵观mac的terminal并没有预设命令的功能,尝试iterm2有一个profile的选项卡,这个可以实现建立ssh连接并远程执行命令,但是由于只能设置快捷键
启动profile,而且不能通过alfred的>alias
来快速执行bash命令。
所以我继续探索有没有方法在原生的terminal上实现这个功能,经过V2EX的高人指点发现是可行的。
具体命令
1 | ssh 1@2.com -p 22 -o ServerAliveInterval=60 -t 'pwd;bash;' |
解释
-o ServerAliveInterval
:首先-o
是为这个连接添加一个属性(option),那么要添加的属性叫做ServerAliveInterval
,这个属性的作用是client每隔60秒发送一次请求给server,然后server响应,从而保持连接。
-t
:建立这个连接时强制使用伪终端
模式,具体效果观者可以试着去掉这个命令对比一下效果。
'pwd;bash;'
:这就是我们要执行的命令,首先执行了一个pwd
命令,查看当前的目录,第二命令是重点,执行bash
命令能够让我们远程执行命令后不自动断开ssh连接。
所以解决自动退出的有效方法就是在执行命令最后使用
bash;
这个命令。
号外
其实linux系统可以用alias
命令让我们简化ssh命令连接打这么多字母,这个你可以自己百度一下噢~