用java 运行proxyCommand 命令,带来命令交互式问题

问题:

linux 运行 proxyCommand 命令 需要交互输入两次密码 ;跳板机密码和目标服务器密码。

解决:

最终要解决的是:跳板机与目标服务器之间 无密码跳转

解决方案:

1、 做公钥认证,不使用秘钥认认证,太麻烦。 需要交互式输入密码;本机、跳板机、目标机器三者已经做过公钥认证。

使用命令能够实现。

2、 UserInfo 实现 UIKeyboardInteractive ,赋值交互式命令的值。


一、ProxyJump

demo:

wkvm2 (模拟本机)、wcl:堡垒机、wkvm1(目标主机)

在wkvm2中~/.ssh/config 文件中写入

Host wkvm1     #目标机名称

    HostName 192.168.0.11    #目标机ip 

    ProxyJump [email protected]:22    #堡垒机 用户名@IP:22

    User root                    #目标机用户

在 wkvm2 中运行 ssh -J 堡垒机用户@堡垒机IP:22 目标机用户@目标机IP

[root@wkvm2 ~]# ssh -J [email protected]:22 [email protected]

[email protected]'s password:   

Last login: Fri Oct 12 13:25:16 2018 from 192.168.0.85

[root@wkvm1 ~]#

注意这儿也需要交互输入。

第一次输入yes or no {首次输入,秘钥}

第二次输入堡垒机密码

二、ProxyCommand

ssh -o ProxyCommand='ssh 堡垒机用户@堡垒机IP nc 目标机IP 22' 目标机用户@目标机IP

ssh -o ProxyCommand='ssh [email protected] nc 192.168.0.11 22' [email protected]

注意这个也是需要交互输入的 。

第一次输入yes or no {首次输入,是否保存堡垒机秘钥}

第二次输入堡垒机密码

第三次输入yes or no {首次输入,是否保存目标机秘钥}

第二次输入目标机密码

三、ssh 公钥私钥认证操作及原理

待续


参考链接

1、JLine :处理控制台输入的java库

2、java交互式命令行调研

3、Netcat, ProxyCommand et les rebonds Ssh

4、Tunnel Ssh

5、透过SSH代理穿越跳板机的方法

6、使用 Java 进行 OpenSSH 和 PuTTY private key 密钥格式的解析与转换

你可能感兴趣的:(用java 运行proxyCommand 命令,带来命令交互式问题)