半新手,所以火焰喷射器只'烧狗'请。 😉
机器A在工作,我想从家里的一台机器(称为机器B)进入SSH。机器A在公司防火墙的后面,只有端口22和端口80打开。 在机器的一边,我想把机器A上的SSH端口从22改为(比如说)2200,以减less端口22上的脚本小子的数量(我有其他的SSH加固策略,但是想添加将默认的SSH端口从22移动到(比如说)2200.这在SSHDconfiguration中很容易,但是由于端口2200被阻塞,所以这样做会杀死任何入站端口。
所以,一些转发/隧道选项。 我已经在机器A和机器B两边尝试了一些排列,但还没有find魔术组合。 我希望在这个论坛上有更多的学习types可以build议:
1 \我需要在机器A上设置转发/端口configuration?
2 \从机器Bbuild立隧道方面,我需要尝试的基本SSH命令结构是什么?
对于这个极端“基本”层面的问题,事先道歉(如果他们之前已经回答了,再次道歉,因为我能find的答案在我的层面上不是完全可以得到的)。
提前谢谢了。
您的公司防火墙只允许端口22和80 …所以您只能在端口22和80上运行服务。如果要通过sshbuild立端口转发来访问其他不可访问的端口,则首先需要连接到远程主机,除非您能够穿越企业防火墙,否则您无法做到这一点。
换句话说,你将不得不把ssh放在22端口上。最好的办法是,如果你担心那些勤奋的脚本小子,只需要禁用密码authentication,并且总是使用ssh密钥。 这将使系统在很大程度上不会受到基于密码的暴力攻击的影响。 如果有人发现某种可能被利用预authentication的ssh漏洞,那显然是没有帮助的,但是这可能是你在这种情况下最好的。
如果防火墙上的孔位于TCP / 22上,那么必须在TCP / 22上监听连接。 这可以是你的sshd过程,或其他的东西。 虽然如果你想不用先敲门,就可以使用sd,但是你很难在TCP / 22上听ssd。
另一种select是使用某种types的门环脚本。 我以前没有用过,我只知道他们在那里。 有一个监听TCP / 22的服务。 当它收到正确的魔法string时,它会自动卸载,并在TCP / 22上将SSHD带上X分钟。 当SSH进程closures时,门听者在TCP / 22上重新生成,并等待下一次敲门。
但最终,保护SSH应该足够好。 依靠公钥和禁用密码authentication,所有scriptkiddiez可以做的就是填写你的日志文件。 嘈杂,但无害的一种。
其他答案涵盖了这个很好,但我想提一下,你可以在机器上使用denyhosts来减less机器人的曝光。 denyhostslogging了尝试的ssh请求,如果外部机器失败了太多次,它将阻止该ip地址vi /etc/hosts.deny。 因此,例如一个僵尸,试图作为用户鲍勃100次ssh将在第五次失败尝试(所有这些参数是可调的)后永久阻止。
你也应该遵循良好的SSH服务器安全实践,我相信在其他服务器默认的答案中会详细介绍。 禁用根用户login。 除了极less数的其他授权用户之外,禁用所有用户的login。 禁用密码login并只允许公钥ssh连接。
从工作到家的隧道,并build立一个隧道,让您从家里连接..
A在工作,B在家。 你想从B连接到A,但防火墙阻止它。 相反,从A连接到B创build一个隧道回到服务器。 这假定你有一个在家里运行的ssh服务器,并在你的路由器上打开了端口22。 如果你的家用机器是Mac或Linux,你可能已经运行了; 如果Windows安装了cygwin并设置了sshd(链接) 。
在工作中,把它放在你的.ssh / config文件中:
host home hostname B # replace with your FQDN or IP user homeuser # user at home LocalForward 2222 localhost:22
现在,当你运行“ssh home”的时候,端口2222将成为你本地机器的ssh服务器的隧道。 我发现如果您在某个窗口中只是在一个提示符下离开,那么连接可能会偶尔挂起,或者文件墙可能会在一段时间后closures。 我更喜欢使用类似的命令
while true; do ssh -n home sleep 600; sleep 3000; done &
这将启动一个持续十分钟的隧道,closures,然后在下一个小时开始另一个隧道。 如果有隧道连接,当睡眠完成时,ssh命令等待它们完成。
(睡眠3000是没有必要的;你可以随时保持打开状态,这只是一些企业不喜欢看到频繁或长期持续连接到外部机器)
现在,在主页上,把它放在你的.ssh / config文件中:
host worktunnel hostname localhost user workuser port 2222 UserKnownHostsFile ~/.ssh/known_hosts.worktunnel
保存它,然后当你的家庭机器上的隧道,你可以input
ssh worktunnel
你进来了
UserKnownHostsFile行不是必需的,但是当您为不同的主机使用具有不同端口的多个通道时会阻止警告,所以默认known_hosts文件中的localhost条目将不匹配所有这些主机。
您可以将多个LocalForward行添加到A上的configuration文件; 例如LocalForward 2223 server2:22#另一个ssh的服务器LocalForward 5900 qa:5900#vnc LocalForward 3389 exchange:3389#远程桌面LocalForward 3128 internalProxy:3128#用于浏览内部主机#等
(对于隧道X连接,请使用'ssh -X',而不是LocalForward。)
这里不需要更改ssh服务器端口号。
请注意,这种远程访问可能违反贵公司的政策。 有些地方会扫描或审核这种连接,并可能会给你一个警告。 你可以运行隧道命令五分钟,睡55。 或者在家庭计算机上有一个脚本,当你不需要隧道时立即退出。 Logmein是另一个免费的解决scheme,可以很好地远程访问防火墙后面的(windows,mac)桌面