需要在linux远程使用sftp上传、下传文件的时候,sftp脚本比较麻烦,网上很多介绍使用lftp工具,不过实际使用的时候发现并不好用,最后利用ssh-keygen工具发现非常方便,步骤如下:
第一步,在客户端需要使用的用户shell下运行ssh-keygen -t rsa 命令。主要要使用具体需要使用sftp的用户。
系统会提示
Generating public/private rsa key pair.
Enter file in which to save the key (/home/用户/.ssh/id_rsa):
输入需要保存key 的文件名,直接回车即可
Created directory '/home/用户/.ssh'.
Enter passphrase (empty for no passphrase):
输入密码短语,这个是为了保护这一套key,一般安全需求的情况下,直接回车即可
Enter same passphrase again:
Your identification has been saved in /home/用户/.ssh/id_rsa.
Your public key has been saved in /home/用户/.ssh/id_rsa.pub.
The key fingerprint is:
d1:ff:9e:98:70:e9:d0:d0:3a:1c:ef:ad:ab:92:cb:ae 用户@本机
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| . . |
| . o |
| S o o |
| . * o |
| .* = . |
| .o B = . |
| Eo+o..Bo+ |
+-----------------+
于是,在用户目录下,生成了一个.ssh目录,里面有两个文件。
第二步:将id_rsa.pub文件上传到服务器需要登录的用户目录下同样建立.ssh目录中,例如服务器目录为suser1
则为 /home/suser1/.ssh目录,并改名为 authorized_keys 于是完整目录为
/home/suser1/.ssh/authorized_keys
第三步:分别把服务端和客户端的.ssh目录及以下文件的权限去掉组和其他的,只留下该用户的
最后,就是直接使用了,注意sftp的时候要用用户名
sftp 用户名@服务端地址
就直接登录了。