ssh sftpパスワードフリー公開鍵ログイン

4013 ワード

皆さん、こんにちは.ダックです.
今日共有されているのはjava ssh sftpのパスワードなしログインです.
 
1.JAVAコードssh接続
http://www.360doc.com/content/14/0409/16/9552892_367544139.shtml
https://blog.csdn.net/u013066244/article/details/70198839
公開鍵と秘密鍵はコードで生成する必要はありません.linuxにはプラグインがあります.
 
2.linux ssh-keygen公開鍵と秘密鍵の生成
https://blog.csdn.net/xinshui151/article/details/79187563
SSH-keygenパラメータの説明:
https://www.cnblogs.com/sunjf/p/ubutu_ssh.html
 
3.linux非密接続
sftp -oIdentityFile=/root/.ssh/id_dsa -oPort=8002 username@ip  

oPort:ポート
oIdentityFile:秘密鍵ファイル(絶対パス)
username:ユーザー名
ipアドレス:ip
 
4.実際に発生した問題
上の接続に従って、パスワードを入力させてください.

うん.私が生成したdsa鍵はパスワード付きです...しかし、私は忘れました.あまりにも彼ですか.
ssh-keygen -t dsa

仕方なく、ひとつ作り直しましょう.赤い線の部分は必ず記入しないで、直接車に戻ります!!!
ssh sftp 免密码 公钥登录_第1张图片
もう一言、rsaとdsaで生成してもいいですが、違いはありません.
ssh-keygen -t rsa

ssh sftp 免密码 公钥登录_第2张图片
 
5.2つの一般的な例外について:
com.jcraft.jsch.JSchException: invalid privatekey

明らかに、秘密鍵が間違っていて、私が最初に取得したのは公開鍵で報告したこの間違いで、秘密鍵に変えればいいので、持っていません.pub接尾辞のファイル.
ssh sftp 免密码 公钥登录_第3张图片
com.jcraft.jsch.JSchException: Auth fail

https://blog.csdn.net/u010648555/article/details/81878189  
これは詳しく話していますが、私のはパスワードが間違っています.前に生成した鍵のパスワードを忘れたので...
 
com.jcraft.jsch.SftpException: Permission denied

異常がどこで起こったのかよく見なければならない.

私のはこの業界で起きたのです.次にlinuxでlsコマンドを実行します.

linuxサーバ側の権限が不足しています.読む権限がありません.フォルダ権限を読み取り可能に変更すればいいです.
com.jcraft.jsch.SftpException: java.io.IOException: Pipe closed
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:551)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:492)
Caused by: java.io.IOException: Pipe closed
    at java.io.PipedInputStream.read(PipedInputStream.java:307)
    at com.jcraft.jsch.Channel$MyPipedInputStream.updateReadSide(Channel.java:362)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:515)

この異常はput操作を実行して現れたもので、半日見てからput操作がsftpにあることに気づいた.disconnect()の後に実行されます.コードは次のとおりです.
ssh sftp 免密码 公钥登录_第4张图片
tryの中に入れればいいのに...コードを変更してすべて木を変更しました...こんな問題には気づかなかった