【问题标题】:SCP in Java with URIs without password and usernameJava中的SCP,带有没有密码和用户名的URI
【发布时间】:2015-04-02 23:08:28
【问题描述】:

如何使用SCPClient 使用 Java 中的 URI 将文件从 RHEL linux 机器 SCP 到另一个 RHEL linux 机器而无需密码和用户名?我知道如何做一个无密码的 ssh,我可以在没有密码的情况下 SCP 一个文件,但是我在没有用户名的情况下无法让它工作。

这是我的猜测:

来源:file:///home/username/temp.txt

目的地:scp://@192.168.1.1:/home/username/

【问题讨论】:

  • 我可以想象很少有不需要 SSH/SCP 密码(或密钥)的有效场景...

标签: java linux ssh scp


【解决方案1】:

你试过scp://username@192.168.1.1:/home/username/吗?

【讨论】:

  • 我知道这行得通。问题是我想 SCP 时不知道“用户名”。
  • 那你就不能 SSH/SCP。 SSH/SCP 无法单独通过公钥来确定使用情况。
  • @Everlight 用户名是必填项...SCP 通过 SSH...您正在登录远程框。
  • 没有办法简单地尝试以所列可用用户之一的身份登录吗?或者更确切地说,使用您正在 scp-ing 的用户名而不告诉 SCPClient 用户名是什么?比如,我该怎么做“ssh -Y 192.168.1.1”? - 使用当前用户名和无密码 ssh。
  • 啊,这会为您获取当前用户名 - 使用 System.getProperty("user.name") 获取该用户名。
【解决方案2】:

根据SCPClient 页面,我要说这是不可能的。所以,最好的方法是做

SCPClient scpc = new SCPClient
scpc.setRemoteHost( "192.168.1.1" );
scpc.getValidator().setHostValidationEnabled( false );
scpc.setAuthentication( "/home/username/.ssh/id_rsa", System.getProperty("user.name"), "" );
scpc.connect();
scpc.put( "file:///home/username/temp.txt", "scp://" + System.getProperty("user.name") + "@192.168.1.1:/home/username/" );

出于我的目的,假设远程用户名与本地用户名相同是安全的。

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2015-05-18
    • 2011-02-05
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多