首先申明,以下内容均源于网络,所有的命令提示,解释都是预先学习了网上的大牛们且自己进行了实验。此处只是随笔/记录,便于本人以后学习,也便于大牛指正理解错误的地方!!
若有大牛发现问题还请在评论区指教。
公钥和私钥的生成
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
时先不要关闭当前的连接,当你确认通过私钥能连接到服务器再关闭,不然,一旦私钥连不上,你又把密码连接方式给禁用了,那就连接不上服务器了(反正我是不知道怎么连了)。