ssh sftp 免密码 公钥登录

大家好,我是烤鸭:

    今天分享的是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秘钥是带密码的。。。。然而我忘了。太他么2了。

ssh-keygen -t dsa

没办法,重新生成一个吧。红线的部分一定不要填,直接回车!!!

另外说一句,用rsa和dsa生成都可以的,并没有什么区别。

ssh-keygen -t rsa

5.  关于两个常见异常:

com.jcraft.jsch.JSchException: invalid privatekey

很明显,就是私钥取错了,我一开始获取的是公钥就报的这个错,换成私钥 就好了,不带.pub后缀的文件。

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() 后执行的,代码如下:

放到try里边就好了.....改代码改的都木了...这种问题都没发现

猜你喜欢

转载自blog.csdn.net/Angry_Mills/article/details/82837542