我想加快连接到特定服务器的速度。
我有服务器让我们说:
123.123.123.1
123.123.123.2
123.123.123.3
我通常连接以下内容:
ssh -p 12345 [email protected]
这很痛苦,因为服务器之间的唯一区别是 ip 的最后一个数字。
我尝试了以下代码:
alias ssht='{ ip=$(cat -); ssh -p 12345 my_user@"123.123.123.$ip"; }<<<'
但是我收到一个错误:
karl@karls-laptop ~/scripts $ ssht 1
Pseudo-terminal will not be allocated because stdin is not a terminal.
有没有办法让这个工作?
使用预期的方式并将选项和别名写入
~/.ssh/config
:等等...
然后连接只是使用
这需要一个函数——简单而健壮,而
alias
在这种情况下,an 将是脆弱的。这样的事情应该做:
该条件
[[ $1 =~ ^(1|2|3)$ ]]
确保您输入了 1、2、3 之一作为第一个参数(任何尾随参数都被忽略)。现在,您可以将所需的最后一个八位字节作为第一个参数:
把它放在你
~/.bashrc
的,让它在任何交互式会话中都可用。您可以在
~/.ssh/config
. 来自man ssh_config
:结合:
所以,在你的
~/.ssh/config
,放:然后:
改用函数:
更好的解决方案是使用 ssh
config
文件:有一些类似于:
您还可以使用 ssh 密钥来提高速度,最后只运行:
并且您已连接到该服务器。
您甚至不需要使用 ssht 之类的名称。以数字开头的名称,即使只有数字也是 ssh 配置文件中的有效主机名。
以下作品适用于 Xubuntu Xenial
我的一部分 ~/.ssh/config
我运行的命令(下面我默认添加
-vv
了详细日志记录到STDOUT
您的屏幕)输出
更新 - 下面是一个骇人听闻的替代解决方案,仅用于 bashist 练习,也许是快速和肮脏的东西:
它能做什么
-L
,-R
,-D
)、详细模式 (-vv
)、no-TTY (-T
) 等。例如,我想启动一个没有终端的 socks 代理
如您所见,没有命令提示符,它使用
-vv
,-T
,-D 1080
参数执行。我也可以在我的机器上验证隧道(基本上是 SOCKS5 代理)