嘿!
我正在使用
com.trilead.ssh2.Connection
中的 java 7
打开连接。
测试时,我在端口
localhost
上打开与 22
的连接:
Connection connection = new Connection("localhost", 22);
然后我尝试使用
authenticateWithPublicKey
方法进行身份验证:
char[] key = IOUtils.toString(new FileInputStream("keyLocation")).toCharArray();
boolean authenticated = connection.authenticateWithPublicKey("myUsername", key, "");
但它没有进行身份验证。我正在
mac sierra
上运行,我想知道这是否有什么关系。我正在使用一对 dsa
键。
谢谢!!
我无法解决
dsa
一对密钥的问题(我相信这与密钥大小有关,而dsa是1024)。我创建了一对新的 rsa
密钥,大小为 2048。正如信息一样,我将编写成功管理从我的 mac Sierra 配置的 java 代码验证连接的步骤:
我在
.ssh/
目录:
ssh-keygen -t rsa -f 'key_name'
cat key_name.pub # copy the public key
# add the public key to authorized_keys file
ssh-add -K key_name
ssh-add -A
ssh-add -l # just to check if key is added
就是这样,我成功地验证了连接。
有几点我想评论一下:
authenticateWithDSA
。当我连接其他电脑而不是本地主机时,我测试了它如何与 authenticateWithPublicKey
一起工作。所以工作代码如下所示:
import java.io.File;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import com.trilead.ssh2.Connection;
public class ConnectSSH
{
public static void main(String[] args)
{
try {
Connection connection = new Connection("destination_host.com", 22);
connection.connect();
boolean authenticated = connection.authenticateWithPublicKey("loginAsUser", new File(System.getenv("HOME") + "/.ssh/id_rsa"), "");
System.out.println("Authenticated: " + authenticated);
ByteArrayOutputStream out = new ByteArrayOutputStream();
connection.exec("set", out); // execute some command(s)
connection.close();
System.out.println(out.toString());
} catch (Exception e) {
System.out.println("Exception!");
e.printStackTrace();
}
}
}
如何构建和运行它:
git clone https://github.com/jenkinsci/trilead-ssh2.git
git checkout trilead-ssh2-build-217-jenkins-27
cd trilead-ssh2-build-217-jenkins-27
mvn -Drevision=build-217-jenkins -Dchangelist=999999-SNAPSHOT clean install
javac -cp .:$HOME/temp/trilead-ssh2/target/classes:$HOME/.m2/repository/commons-io/commons-io/2.2/commons-io-2.2.jar ConnectSSH.java
java -cp .:$HOME/temp/trilead-ssh2/target/classes:$HOME/.m2/repository/net/i2p/crypto/eddsa/0.3.0/eddsa-0.3.0.jar:$HOME/.m2/repository/commons-io/commons-io/2.2/commons-io-2.2.jar ConnectSSH