海底暴风雪

富在术数不在劳身,利在局势不在力耕

SSH免密登录

密钥的生成

自从1024的rsa被一致认为不安全以后,rsa就被其他的算法开始替代了,现在认为4096位的rsa才是安全的,现在新的ssh支持多种算法,其它算法相对rsa都比较短,所以很多人用其它算法,可以使用ssh-keygen --h 查看命令帮助

ssh-keygen --h
[-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]

主要支持的算法主要有上面几种,rsa推荐,个人目前用的较多的时ed25519
使用ssh-keygen生成密钥,需要说明的是,这个命令在有openssh的设备上一般都可以用,也可以安装三方软件,比如git,在windows中,安装过完git后,在安装目录找到usr/bin文件夹,并将其加入到环境变量,就可以使用ssh-keygen命令。同时git中还有一个好用的命令。

ssh-keygen -t ed25519

一直确定就行

完成后会在ssh目录下生成公钥ed25519.pub和私钥ed25519,其中私钥一定给要保存好,不要外泄。

ssh所在目录一般是当前登录的用户目录下,如果登录的是linux root用户就在root目录,如果是一般用户就在普通用户的home目录下,在windows中ssh在C:\Users\Admin\.ssh

将公钥添加到要登录的服务器

在这一步中要使用git工具中的另一个命令ssh-copy-id,这个命令只能在git的bash中使用,无法直接通过windows执行,可以使用组合键调用Shift + 鼠标右键调出包含git bash的他弹出菜单,选择git bash然后执行以下命令。

ssh-copy-id -i ed25519.pub user@host:port

其中user是登录服务器要用的用户名,host是ip或域名,port端口默认是22可以不写,如果不是22就需要特别指定。

使用密钥登录

在windows上,在用户的.ssh文件夹中添加的config中添加配置文件,

Host 192.168.31.211
 HostName 192.168.31.211
 User user-name
# 私钥文件位置
 IdentityFile C:\Users\Admin\.ssh\ed25519

至此就可以使用密钥免密登录了,在cmd中使用以下命令免密登录了

ssh user-name@192.168.31.211

github或gitee的免密登录

github和gitee一样,都需要在本地先生成密钥对,然后将生成的公钥放到github设置中的ssh密钥管理中,添加完成后测试,用以下命令,不报错就表示密钥添加完成

ssh -T git@github.com

密钥登录失败

密钥登录失败可能是用户的文件夹权限错误导致的

chmod 755 /home/user
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys

chown user:user/home/user
chown user:user/home/user/.ssh 
chown user:user/home/user/.ssh/authorized_keys

改完后sudo systemctl restart sshd或者sudo service ssh restart

搜索

文章分类