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

dal*_*ler 9 ssh startup tunnel proxy

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

ssh -d 9000 user@userserver
Run Code Online (Sandbox Code Playgroud)

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

但是,如何在 Ubuntu 中自动执行此过程,以便每次登录并启动隧道时都不必打开终端?我想在登录的那一刻就使用 SSH。

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

Oxw*_*ivi 9

  1. 根据此答案设置无密码 SSH 登录:

    • ssh-keygen (系统会提示你输入密码,留空)

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

  2. 为 SSH 添加启动项:

在此处输入图片说明

在此处输入图片说明


小智 1

如何按照 Source Lab 的建议使用 ssh-key 设置,但使用密码短语设置密钥并确保 ssh-agent 正在您的计算机上运行,​​这样每个登录会话只需输入一次。

这样做有一些优点: - 每当您发出 ssh 命令时,您都可以获得自动无密码登录(除了首次启动/登录) - 您的密钥有一个密码短语,因此更安全 - 使用 pub/private 密钥非常方便标准并将受到大多数 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
Run Code Online (Sandbox Code Playgroud)

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