linux中公钥设置和远程登录
公钥和私钥的生成
ssh-keygen命令专门是用来生成密钥的。大家可以谷歌一下(条件不允许百度一下也行)。
这里列出了最基本的四个:
1.-t 用来指定密钥类型(dsa | ecdsa | ed25519 | rsa | rsa1 通常我们常用dsa和rsa算法进行加密,可以百度搜下);
2.-P 用来指定密语;
3.-f 用来指定生成的密钥文件名;
4.-C 用来添加注释。
命令:
ssh-keygen -t rsa -P 123456 -f test -C 'my test key'
解释:
就是新建了密语为123456注释为my test key文件名为test的密钥。此命令会生成test和test.pub两个文件,前者为私钥文件,后者为公钥文件。如果你想免密登录的话,请将密语设置为空。
另外:请注意ssh-keygen是用短线符号连接在一起的,不要分开,中间如果有空格会报错:
Bad escape character 'ygen'.———不好的转义字符“ygen”。

也可以不用输这么长的命令一步一步的来根据提示操作:
命令:
ssh-keygen -t rsa

截图没截好,最后无字的红色箭头文字内容为:到你创建公钥目录下去找test(私钥)和test.pub(公钥)两个文件

将公钥部署到服务器
上一步生成了公钥和私钥后,需要将公钥部署到服务器并用私钥登录。使用/winscp/xhell/secureCRT/scp或者你的工具将公钥上传到服务器并将文件内容追加到~/.ssh/authorized_keys中。例如:
#在本机上执行此命令,上传公钥
1.xshell/secureCRT:
rz -e 找到test test。pub文件目录
2.scp:
scp -P your_port test.pub user@hostname:/tmp
3.winscp:
选择上传,或者直接拖放至目标文件夹
#在服务器上执行此命令,追加到authorized_keys(这个名字可以自己取,但后面使用要用对)
cd /home/ && cat test.pub >> ~/.ssh/authorized_keys
#更改权限
chmod 600 ~/.ssh/authorized_keys
更改服务器配置
1.xhell/secureCRT等连接工具:
执行vim /etc/ssh/ssh_config打开ssh_config
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa

把前面#去掉,然后在 IdentityFile 后填写你用来执行ssh时所用的密钥
2.scp连接修改,将如下的配置打开:
执行vim /etc/ssh/sshd_config打开sshd_config配置文件
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启sshd,service sshd restart或者systemctl restart sshd.service。重启之后,服务器已经支持远程ssh连接了
推荐使用1方法,方便。2方法有点难找。
连接服务器
1.xhell/secureCRT连接服务器的,直接导入私钥并连接就行(推荐)
2.通过ssh命令来远程连接服务器,执行ssh -p your_port username@domain -i your_private_certification命令,就可以连接到服务器。
pS:
如果只允许服务器通过公钥和私钥的方式来连接服务器,可将服务器配置文件/etc/ssh/sshd_config中的PasswordAuthentication yes改为PasswordAuthentication No,

在重启sshd时先不要关闭当前的连接,当你确认通过私钥能连接到服务器再关闭,不然,一旦私钥连不上,你又把密码连接方式给禁用了,那就连接不上服务器了。
浙公网安备 33010602011771号