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


9

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

ssh -d 9000 user@userserver

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

但是,如何在Ubuntu中自动执行此过程,从而不必每次登录并启动隧道时都打开终端?我想在登录后立即使用SSH。

我知道我可以创建一个bash文件,但是我不必以纯文本格式存储服务器用户的密码,因为在执行初始命令后会提示输入密码吗?


3
你可以设置SSH密钥,而不是使用一个密码(见pkeck.myweb.uga.edu/ssh),但无论你的设置如何,你会被危及安全的,如果您自动化登录的...
LassePoulsen

并非完全与您的问题有关,但我建议您尝试sshuttle通过SSH路由Internet。它不能解决无密码登录问题。
Oxwivi 2011年

如果您按照我的回答设置了无密码的SSH,sshuttle也可以自动启动(注意,sshuttle需要管理员权限才能运行)。
Oxwivi 2011年

Answers:


9
  1. 根据以下答案设置无密码的SSH登录:

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

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

  2. 为SSH添加启动项:

在此处输入图片说明

在此处输入图片说明


@Stefano,谢谢!一半的荣誉归给Rinzwind和Marco,他们首先使我了解了无密码SSH!
Oxwivi 2011年

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

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


无论如何,是否可以通过Ubuntu中设置的网络代理部分来执行此操作?有一个用于用户验证的选项,您可以预先输入用户名和密码吗?以防万一我的设置发生变化,我不想进入并重新命名文件。
dalanmiller 2011年

恐怕即使使用autossh也不行。
skerit 2011年


-1
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

请记住,ssh密钥的设置是专用的。盲目接受所有提示而不阅读正在执行的操作可能会损害您的服务/系统。
Braiam
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.