最近在用scp命令传文件,老弹出输入密码提示,不胜其烦,于是研究了一下,发现网上的配置教程比较零散,而且没有解决 我的问题,研究了一番终于有了结果,做个笔记,也给需要的新手一些指引。
1. 服务器配置修改(非root用户可跳过)
很多服务器为了安全不允许root免密登陆,如果你需要root免密登录,需要修改服务器的ssh配置文件
**如果你是公司服务器,请不要做此操作**sudo vi /etc/ssh/sshd_config修改以下参数,有#号的去掉前面的#号
PermitRootLogin yes PermitEmptyPasswords yes然后重启ssh服务
service sshd restart2. 生成公钥
#生成id_rsa id_rsa.pub 一个公钥一个私钥 ssh-keygen -t rsa #将公钥上传到服务器 ssh-copy-id root@< you ip addr > #在服务器.ssh目录下创建认证文件authorized_keys,并将公钥写入authorized_keys cat id_rsa.pub >> authorized_keys #现在可通过 ssh root@< you ip addr > 直接登陆服务器注意
如果手动指定了公钥的路径或文件名,需要手动将公钥上传到服务器的~/.ssh目录下,如:scp ~/.ssh/centos_id_rsa.pub root@< you ip addr >:~/.sshssh-keygen常用参数
-t:指定生成密钥的类型,默认使用SSH2d的rsa
-f:指定生成密钥的文件名,默训id_rsa(私钥id_rsa,公钥id_rsa.pub)
-P:提供旧密码,空表示不需要密码
-N:提供新密码,空表示不需要密码
-b:指定密钥长度 (bits),RSA最小要求768位,默认是2048位;DSA密钥必须是1024位 (FIPS 1862标准规定)
-C:提供一个新注释
-R hostname:从known_host(第一次连接时就会在~/.ssh目录下生产该密钥文件)文件中删除所有属于hostname的密钥3. 创建登陆配置文件
本机创建ssh登陆配置
cd ~/.ssh cat >config <<EOF Host centos Hostname 172.16.225.37 Port 22 User root IdentityFile ~/.ssh/centos_id_rsa Host centos Hostname 172.16.225.37 Port 22 User herff IdentityFile ~/.ssh/centos_id_rsa EOF- cenos 主机别名(可以取代IP用作登陆,见下面的效果演示)
- Hostname IP地址或网址(换成你服务器的IP)
- Port 端口(生产环境的端口不可能是22,请根据实际情况需要)
- Use 用户名,如果本机用户名与远程不一致,要创建两个
- IdentityFile 本机的公钥路径(注意修改过的文件)配置完成试试效果
ssh centos #➜ ~ ssh centos #Last login: Sat Dec 11 17:16:06 2021 from gateway #[root@centos7 ~]#完美~
我一直没有网上找到答案的问题是,我本机用户名是herff,虚拟机Linux是root用户登陆,虽然可以通过 ssh root@172.16.225.37 免密登录,但这还不够,这一步的关键就是要在本机的配置文件里同时加入本机和Linux的root用户配置,这样问题就解决了,希望对大家所帮助。
发表评论