如何在 SOCKS 代理登录时自动启动 SSH -D 隧道?

如何在 SOCKS 代理登录时自动启动 SSH -D 隧道?

我知道如果我想启动 SSH 隧道

ssh -d 9000 user@userserver

这是在主机“userserver”上为名为“user”的用户在端口 9000 上打开动态隧道的解决方案之一

但是,如何在 Ubuntu 中自动执行此过程,以便每次登录并启动隧道时都不必打开终端?我希望在登录时立即进行 SSH。

我知道我可以创建一个 bash 文件,但是我是否必须以纯文本形式存储我的服务器用户的密码,因为在初始命令之后我会被提示输入该密码?

答案1

  1. 设置无密码 SSH 登录根据这个答案

    • ssh-keygen(系统将提示您输入密码,请将其留空)

    • ssh-copy-id user@userserver(输入你上次SSH登录的密码)

  2. 添加 SSH 的启动条目:

在此处输入图片描述

在此处输入图片描述

答案2

如何使用 ssh-key 设置,正如 Source Lab 所建议的那样,但使​​用密码设置密钥并确保 ssh-agent 在您的机器上运行,因此每个登录会话只需输入一次。

这样做有几个优点: - 只要你发出 ssh 命令,就可以自动进行无密码登录(首次启动/登录除外) - 你的密钥有一个密码短语,因此更安全 - 使用公钥/私钥是非常标准的,大多数 SSH 服务器安装都支持

要设置 SSH 密钥验证:

要使用 ssh-agent/keychain(在整个登录会话期间缓存密码):

至于在启动时自动创建隧道,一个想法可能是创建一个启动隧道的快速 shell 脚本:

~$ sudo cat <<EOF >> /usr/local/bin/start_tunnel.sh
ssh-add # ensure key is added to agent
ssh -D 9000 user@userserver # substitute real server in here (of course)
EOF
~$ chmod +x /usr/local/bin/start_tunnel.sh

然后将其添加为启动程序(系统->首选项->启动应用程序),无论如何都应该可以工作!

答案3

我为此写了一个小脚本:https://github.com/PHLAK/Soxy

答案4

sudo ssh-keygen #type Enter everywhere
sudo cat /home/root/.ssh/ id_dsa.pub >> .ssh/authorized_keys

/etc/rc.local添加字符串:

echo "ssh socks 192.168.0.1:8000" ; sudo ssh -fND 192.168.0.1:8000 localhost

相关内容