[TOC]
说明
如果是使用别人配置好的直接看章节
- SSH客户端使用配置
SSH客户端 生成密钥
ssh-keygen -t rsa -b 4096 -C "yourmail@mail.com"
建议输入密钥名,便于管理类似 my_rsa
同时会输入密钥的密码 2次,不建议使用弱密码,本人记忆一次就行,也可以用生成器生成
生成的密钥对my_rsa
,my_rsa.pub
,默认存储在 ~/.ssh
目录,其中没有后缀的是私有,有后缀 .pub
的为公钥
在linux/mac中可以直接使用pem格式的证书:例如远程登录linux主机:ssh -i xx.pem xxx@host
但是在windows就不方便了, 请将pem格式转成ppk格式,然后利用Putty登录
SSH服务端配置
将my_rsa.pub
的内容复制到服务器的 ~/.ssh/authorized_keys
中,如果存在文件authorized_keys
,就在这个文件的末尾加上这次生成的公钥内容
# 进入存放ssh配置的目录查看authorized_keys文件
cd ~/.ssh
ls
# 存在authorized_keys这个文件
cat -n ~/.ssh/my_rsa.pub ~/.ssh/authorized_keys
# 没有authorized_keys这个文件
cp ~/.ssh/my_rsa.pub ~/.ssh/authorized_keys
必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。
chmod 644 ~/.ssh/authorized_keys
公钥要放在登录服务器所用的账号的用户目录下,
比如你用帐户demo登录远程服务器,就要把公钥 放到 /home/demo/.ssh/下, authorized_keys文件也是在这个目录下
SSH客户端使用配置
将私钥文件文件放到 ~/.ssh
目录中
vi ~/.ssh/config
在文件中写入内容为
Host server #别名,域名缩写
HostName sever.com #完整的域名
User username #登录该域名使用的账号名
IdentityFile ~/.ssh/my_rsa #私钥文件的路径
其中#号后面的内容去掉,server
sever.com
username
等换成你的服务器信息,保存后就可以使用了
如果不知道
username
,去服务端执行命令whoami
就可以获得配置时的账号名,如果是别人给的就得再问一次用户名
多组服务器类似,符合YAML结构就行,设置在
~/.ssh/config
中
SSH客户端 登录Linux服务器
ssh登录了方法为
# 登录刚才设置的别名服务器
ssh server
# 测试是否配置正确 -p 自定义端口
ssh -T server -p 22
# 打印测试配置详情
ssh -Tv server -p 22
第一次登录会让你是否记入这次认证,确认记住后,以后就可以直接 ssh+别名
登录了
查看sshkey公钥信息
# 查看公钥 pubKeyPath 的指纹信息
ssh-keygen -l -f [pubKeyPath]
Error
ssh key Key is invalid
密钥错误,或者配置错误
github ssh key Key is invalid. Ensure you've copied the file correctly
此错误出现原因是:在github上添加新key时,不正确到拷贝了 ~/.ssh/id_rsa.pub
内容所致。一般发生在linux下,因为windows下用notepa++打开这个文件并复制一般是没有问题的,而linux下使用vim打开再复制就会因为vim添加了回车而导致key添加失败。
解决办法是:使用cat命令将 .ssh/id_rsa.pub
内容输出到终端,再拷贝。
Permissions 0644 for '..' are too open
因为密钥的权限太高导致的
把权限降到0600就ok了
chmod 0600 [you client private key]