首先申明,如下内容均源于网络,全部的命令提示,解释都是预先学习了网上的大牛们且本身进行了实验。此处只是随笔/记录,便于本人之后学习,也便于大牛指正理解错误的地方!!nginx
如有大牛发现问题还请在评论区指教。算法
公钥和私钥的生成shell
ssh-keygen
命令专门是用来生成密钥的。你们能够谷歌一下(条件不容许百度一下也行)。vim
这里列出了最基本的四个:ruby
1.-t
用来指定密钥类型(dsa | ecdsa | ed25519 | rsa | rsa1 一般咱们经常使用dsa和rsa算法进行加密,能够百度搜下
);服务器
2.-P
用来指定密语;网络
3.-f
用来指定生成的密钥文件名;dom
4.-C
用来添加注释。ssh
命令:ide
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
时先不要关闭当前的链接,当你确认经过私钥能链接到服务器再关闭,否则,一旦私钥连不上,你又把密码链接方式给禁用了,那就链接不上服务器了(反正我是不知道怎么连了)。