Tabsu:
私はJSCHを使用してSSH経由で私のプライベートサーバーにアクセスすることになっているアプリを書いています。私は、公開鍵認証を設定しているので、私はこのアプリが同じように認証します。私はアプリ内で直接私の携帯電話のホームディレクトリ内の(例えばハードコーディング)または分離どこかに私のキーを格納したいので、私はこのアプリを使って一つだけになります。これは多分、プロジェクト内のリソースファイルとして、それを格納するための最良の方法だろうか?私はAndroidの開発にはかなり新しいですので、私はこのための最善の方法だかについてはよく分かりません。
私は試してみました:
// [...]
String user = "my_user";
String ssh_pwd = "my_pwd";
String host = "my_host";
// stored as OpenSSH key - file not found error - where shoud I move this file?
String private_key = "./my_pk";
int port = 22;
// basic SSH connection stuff
JSch jsch = new JSch();
session = jsch.getSession(user, host, port);
jsch.addIdentity(private_key, ssh_pwd.getBytes());
別の方法:
// [...]
// private key in OpenSSH format as a plain string
String private_key = "xyz123abc456def789ghi012...";
// public key in OpenSSH format as a plain string
String public_key = "a1b2c3d4e5...";
// [...]
jsch.addIdentity("id_rsa", private_key.getBytes(), public_key.getBytes(), ssh_pwd.getBytes());
後者は、以下のような結果に「無効のPrivateKey」エラー。それに加えて、私はと仕事に、より安全な方法です両方のかわからないんだけど。
前もって感謝します。
マーティンPrikryl:
String private_key = "xyz123abc456def789ghi012..."; // private key in OpenSSH format as a plain string String public_key = "a1b2c3d4e5..."; // public key in OpenSSH format as a plain string
JSch.addIdentity
(最終的にKeyPair.load
)によって生成された鍵ペアファイルの内容を含むバッファとるssh-keygen
(で-m pem
のOpenSSHの最近のバージョンでは)。
フォーマットはこのようなものです:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAvc04a8wViYV5Kb4jX+MxEqN1vi9q9C7mPhf6DV+mb1ADNAiR
YeLqPMLCYUF2ViobcGfarb51gz7iB2TgkDmhQNK9XDCOUaGYN/FeZcN0JpzkjEjZ
ApbRfshj1h9qKQUW+38XKnltMtf4dxiuxkXph8P6IMVveTDs3sSbBPq560bdJ1AD
...
PEyVxlat2I4ShuLQiO1QIuS8ABu5yDM2EouB6vlxtGEBpIJItp7cyA==
-----END RSA PRIVATE KEY-----
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9zThrzBWJhXkpviNf4zESo3W+L2r0LuY+F/oNX6ZvUAM0CJFh4uo8wsJhQXZWKhtwZ9qtvnWDPuIHZOCQOaFA0r1cMI5RoZg38V5lw3QmnOSMSNkCltF+yGPWH2opBRb7fxcqeW0y1/h3GK7GRemHw/ogxW95MOzexJsE+rnrRt0nUAOu4hHjL6G/nlvdJ1jjZ06NwhYkbAxRoJkHUJTtMT2IL5ZmdAf37KHSPqZS32pLxQDmPutZxpIwlhz4aR78ZGp4+57mR069Y4at09GF0UmgtIiLjlKUexMf5sueVQ8LKhME6vOupMzTbiFEB3UJNq8d9Yx5i+c/IRHUIcI1 marti@MartinuvOmen
これはあなたが持っている形式ではありませんprivate_key
とpublic_key
。
参照してください。文字列から秘密鍵を追加するJSCHを。