本地机器能够直接通过 ssh 登陆 A 机器, A 机器可以通过 ssh 登陆 B 机器,但是本地不能直接登陆 B 机器,求破

2016-05-18 16:44:40 +08:00
 yangxiaoluck

rt,需要本地直接登陆 B 机器

5880 次点击
所在节点    Linux
48 条回复
ddd2500
2016-05-18 17:52:12 +08:00
Bitvise 的话, 可以 A 开启 ssh 代理,
连接 B 时通过 A 的 ssh 代理。
congeec
2016-05-18 17:54:24 +08:00
@yangxiaoluck 任何端口都没权限?不可能吧。难道你的跳板机只开 22 端口?你试试 65535 这种数比较大的端口
wangxn
2016-05-18 17:55:55 +08:00
这不就是 SSH 反向代理吗?根本用不着第三方软件。
ghostheaven
2016-05-18 18:00:23 +08:00
1.把 A 的 key 放在本地
2.ssh -D1080 A ,连到 A 并本地开 1080 socks 代理
3.本地配置.ssh/config,连接 B 的使用代理 ProxyCommand ,可以用 nc 或者 connect
4.本地直接连接 B
glasslion
2016-05-18 18:07:32 +08:00
ssh gateway
xqin
2016-05-18 18:19:14 +08:00
假设 A 的 IP 为 1.2.3.4, B 的 IP 为 4.3.2.1

在本地上执行:
ssh -L 127.0.0.1:1234:4.3.2.1:22 -N xx@1.2.3.4

含义为: 在本地监听 1234 号端口, 用于将 1.2.3.4 可连接的 4.3.2.1:22 的这个端口转发过来
-N 是代表连接之后, 不执行 shell
连接之后, 这个连接的窗口不要关, 然后当要复制文件到 B 的机器上的时候使用

scp -P 1234 xxx.file yyy@127.0.0.1

此处的 yyy 为登陆 B 机器时的账号, 就可以直接把文件复制到 B 机器上了.

你可以把上面的端口 1234 改为 22(当然前提是你本地的 22 号端口可用, 这样你用 scp 的时候, 就不用指定端口号了).

亲测可用.
googlebot
2016-05-18 18:37:22 +08:00
没法破, linode vps 都这种情况,只有 80 , 443 可以访问,其他都被屏蔽,
SlipStupig
2016-05-18 18:40:32 +08:00
A 机器 ssh 端口转发到 B 机器的 SSH
shizhenxiang
2016-05-18 18:52:35 +08:00
cjyang1128
2016-05-18 18:57:22 +08:00
搜索 ssh -L 我经常都是在本地连只有内网 ip 的数据库
lualu2
2016-05-18 19:08:58 +08:00
@yangxiaoluck 这个又不需要权限. 你开的端口是在本地的,本地难道你都没权限?
这个软件相当于 ssh -D 模式. 你用 putty 之类-D 模式连到 A,就会自动开启一个本地的 socks 代理. 和 A 没有关系,A 那边就看到你是 ssh 连上去的,看不到其他现象,也不会新增端口.
shmilyin
2016-05-18 20:03:09 +08:00
ssh -R ssh -L 其中的一个,具体不太清楚用法了。可以查下相关资料
uyhyygyug1234
2016-05-18 21:18:32 +08:00
quix
2016-05-18 21:21:14 +08:00
这里有个最简单的方案:

SSH 通过一个服连上一个另一个服,这里以通过 my-ssh-server-host 连上 github.com 举例

Host github.com
ProxyCommand=ssh my-ssh-server-host.net "/bin/nc -w1 %h %p"

/bin/nc 为充当跳板的服的 nc 的路径请自行替换确保正确
quix
2016-05-18 21:22:07 +08:00
@quix 以上配置请加到 ~/.ssh/config
xurubin
2016-05-19 06:36:09 +08:00
@xqin +1
snopy
2016-05-19 09:10:41 +08:00
加条路由不就解决了
yangxiaoluck
2016-05-19 10:11:04 +08:00
我是用 ssh 在 A 机器上做端口映射,将 A 机器的 2020 端口映射到 B 机器的 22 端口,提示没有权限。
P0P
2016-05-19 11:13:40 +08:00
哈哈,正确的答案在这里, ssh 有 ProxyCommand 命令,可以参考这个 http://stackoverflow.com/questions/17372177/how-to-use-a-jumphost-jump-server-in-a-script
另外一个帖子找不到了,反正是通过跳板机中转一下,用 nc 命令在跳板机上转发包
fallwithme
2016-05-19 13:41:19 +08:00
如果是 *nix 系统,在 ~/.ssh/config 里加个配置:

Host A
HostName xxx.xxx.xxx.xxx
User xxx

Host B
HostName xxx.xxx.xxx.xxx
User xxx
ProxyCommand ssh A -W %h:%p

如果 SSH 版本不支持 -W 参数,那就用 nc :

ProxyCommand ssh A nc %h %p

然后,就可以直接: ssh B
或者: scp file B:/tmp/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/279583

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX