如何在.bashrc中封装SSH跳转命令实现自定义快捷调用?
封装SSH跳转命令的正确方法
推荐用函数实现
直接把目标主机作为ssh -J命令的最终参数即可,这才符合ssh跳转语法的正确用法。在.bashrc里添加:
doot() { ssh -J mylogin@host mylogin@"$1" }
或者用完整的function语法写法:
function doot { ssh -J mylogin@host mylogin@"$1" }
添加后执行source ~/.bashrc使设置生效,之后输入doot host2就会自动执行ssh -J mylogin@host mylogin@host2完成跳转。
你之前写法的问题
- 函数里用
ssh -J mylogin@host && mylogin@"$1"或;的写法完全错误:ssh -J如果不带目标参数,会直接登录代理主机,只有你退出代理主机的shell后才会执行后面的内容,而且mylogin@"$1"根本不是合法命令——你完全误解了ssh -J的作用,它是一次性完成跳转,不需要分两次登录操作。 - 别名写法
alias doot="ssh -J mylogin@host; mylogin@"$1""的问题:bash别名不支持直接使用$1这类位置参数,而且同样犯了命令逻辑错误。
可选:用别名实现(不推荐)
如果非要用别名,可借助参数传递,但可读性和可靠性不如函数:
alias doot='ssh -J mylogin@host mylogin@$1'
内容的提问来源于stack exchange,提问作者Wintermute787
相关产品推荐
相关产品推荐

