没有密码的ssh以及sftp访问可以节省时间,并且可以通过自动化脚本在不同服务器之间复制文件和传输数据。没有密码的ssh配置起来很麻烦,那么如何在Unix和Linux系统中配置无密码ssh和sftp访问?
通过本文可以看到很简单的几步配置即可完成。sftp 使用底层 ssh 访问进行身份验证,通过建立无密码的 ssh 访问后,这个时候其实也就拥有无密码的 sftp 访问权限。
以下示例有两台Linux服务器完成,通过A服务器访问B服务器不用输入密码即可访问B服务器。下面先来看一下A服务器通过sftp访问B服务器是需要输入密码的。

那么接下来开始配置让A服务器通过SSH和sftp访问B服务器不需要输入密码。
1,生成公私钥对
生成本地主机的公钥私钥对,如下所示,按 Enter 键获取默认文件名,没有密码选项。此处的命令生成 RSA 类型密钥,可以在任何目录运行命令 ssh-keygen,但 id 文件将在用户主目录的 .ssh目录中生成。
[root@sharplee ~]# ssh-keygen -t rsa

2,进入到生成公私钥的路径(.ssh)
进入之后可以看到两个以id_rsa开头的文件。id_rsa是私钥,id_rsa.pub 是公钥。检查这些文件的日期时间戳,确保这些文件是最近生成的。
[root@sharplee ~]# cd /root/.ssh/

3,拷贝rsa公钥到远程服务器(B服务器)
将第二步中的公钥文件复制到用户主目录的 .ssh,如果 .ssh 目录不存在,请按以下示例创建它。由于到目前为止还未设置成功无密码访问,需要输入sftp/ssh 密码。
[root@sharplee .ssh]# sftp root@192.168.175.130
root@192.168.175.130’s password:
Connected to 192.168.175.130.
sftp> cd .ssh/
sftp> mkdir .ssh/
sftp> ls
known_hosts
sftp> put id
id_rsa id_rsa.pub
sftp> put id_rsa.pub
Uploading id_rsa.pub to /root/.ssh/id_rsa.pub
id_rsa.pub 100% 388 1.1MB/s 00:00
sftp>

4,使用密码ssh登录远程服务器(B服务器)
第三步已经将文件复制到远程B服务器后,接下来使用ssh和密码登录到远程主机,然后转到用户主目录下的.ssh目录。
[root@sharplee .ssh]# ssh root@192.168.175.130
root@192.168.175.130’s password:
Last failed login: Mon Apr 4 14:16:40 EDT 2022 on tty1
There was 1 failed login attempt since the last successful login.
Last login: Mon Apr 4 06:31:32 2022
[root@B ~]# cd .ssh/
[root@B .ssh]# ls
id_rsa.pub known_hosts
[root@B .ssh]#

5,重命名id_rsa.pub为authorized_keys
重命名或附加到系统中与 ssh 协议版本对应的文件,用户ssh -V找出ssh版本SSH协议1.3和1.5使用文件名作为authorized_keys,SSH协议2.0使用文件名作为authorized_keys2,如果authorized_keys文件已存在,则使用新的文件覆盖它。使用cat以及mv命令来重命名文件。
[root@sharplee creatfile]#cat id_rsa.pub >> authorized_keys
[root@sharplee creatfile]#mv id_rsa.pub authorized_keys

6,改变目录和key文件的权限
ssh对权限非常敏感,所以必须完全根据需要更改密钥文件和目录权限才能正常工作。
[root@B .ssh]# chmod 600 authorized_keys


7,最后来验证一下没有密码如何登录
最后通过ssh连接远程服务器以及sftp连接远程服务器没有输入密码。
[root@sharplee creatfile]# ssh root@192.168.175.130
[root@sharplee creatfile]# sftp root@192.168.175.130

总结:通过以上几步可以不用每次连接远程服务器都输入密码,这样的话就可以不用交互式就能完成sftp文件的下载,可以通过一个命令就完成文件的上传以及文件的下载。
最后如果按照以上几步配置,还需要输入密码的话,可以检查以下两步是否有问题。
1,ssh 目录和authorized_keys/authorized_keys2文件的权限不正确。
2,密钥文件有没有损坏,重新生成并再次复制。是否在追加到现有文件期间插入或截断的空格、字符或行。不要手动复制钥匙,请使用catnew_keys >> authorized_keys;对于新文件,请复制文件并重命名 ,请勿手动复制粘贴内容。
转载请注明:XAMPP中文组官网 » Linux如何使用ssh或sftp命令不用输入密码