大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在上一篇文章 《ssh密钥对登录安全吗?原理篇》 了解了ssh密钥对登录原理后,接下去就是实践的问题了,这是大部分人更关心的知识,其中也有一些隐藏的陷阱。
创新互联客户idc服务中心,提供绵阳主机托管、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。
首先 要生成一对密钥对,ssh-keygen 是 ssh 工具集中的一个工具,用于生成密钥对:
-b 是密钥对的长度,越长越安全,但运算速度就会相应变慢,在这个例子中生成的是一个 RSA 密钥对,其中 id_rsa 是公钥(也可以自定义名字),公钥也叫做 identity 文件,需要放到 ssh 服务器 ~/.ssh/authorized_keys 文件中(其中 ~ 符号表示想要以那个属主用户的身份(比如 root 用户)登录ssh服务器),用于证明这个密钥对拥有访问 ssh 服务器的权限。
在 ssh 登录的时候,ssh 客户端需要读取公钥文件,但不会传输。
那么 passphrase 是什么呢?是一个口令,用于保护密钥对,有了口令慧圆,即使密钥对文件泄漏了,由于攻击者没有口令解密,那么密钥对仍然是安全的。
如果图省事,口令可以为空,如果不为空,则ssh登录的时候需要输入口令。
运行完成后,生成的密钥对默认会保存到客户端属主目录 ~/.ssh 下,为什么生成在这个目录呢?因为登录验证的时候 ssh 客户端会读取属主目录下的公钥文件。
接下去查看生成的密钥对文件,运行如下命令:
id_rsa.pub 文件就是公钥,id_rsa 是私钥,需要注意的就是这二个文件的权限问题,私钥权限必须是 600,严格限制权限,而 id_rsa 权限可以适当放大,对于客户端,~/.ssh 的目录权限不会影响 ssh 登录,前前塌但从安全的角度看,请保持 700 权限。
公钥文件上传到ssh服务器后,其实就可以删除了,因为私钥包含公钥。
接下去 就是要将公钥放到 ssh 服务器上,一般有三种方法:
1:ssh-copy-id
ssh-copy-id 工具专门用于将公钥上传到ssh服务器的authorized_keys文件中,这个工具通悔扮过口令登录的方式上传公钥,运行很简单:
ssh-copy-id 默认会上传 ~/.ssh/ 目录下公钥文件(即 identity 文件 ),ssh服务器上可能有多个用户,那上传到那个用户的.ssh目录下呢?这根据 username 而定,比如 /home/username 目录。
如果 identity 文件不在 ~/.ssh 目录下或者名称不是默认的 id_rsa ,也可以通过 -i 参数指定文件,比如:
如果ssh服务器上的 ssh 打开 StrictModes 严格模式,这个工具会更改ssh服务上的 ~/.ssh目录, ~/.ssh/authorized_keys 文件的权限。
重点要注意的是,ssh服务器用户的.ssh目录必须是700 权限,authorized_keys 文件也必须是 700 权限,否则 ssh 登录验证会失败,下面会重点描述这个问题。
2:手动上传公钥
如果ssh服务器关闭了口令登录方式,就必须使用这种方式了,重点要注意权限问题。
首先拷贝 ~/.ssh/id_rsa.pub 内容,然后登录到ssh服务器上,再将剪贴板的内容粘帖到 ~/.ssh/uthorized_keys 文件中(如果不存在就创建对应的目录和文件)
最后运行下列命令:
尽量保证目录和文件只有对应的ssh用户才能访问,否则ssh登录会失败,原因就是为了保障安全,你总不希望自己的公钥被ssh服务器上的其他用户看到把?
3:使用ssh口令登录方式手动上传公钥
如果机器上没有 ssh-copy-id 工具(Windows 10 原生 ssh 客户端就没有),可采用这种方式,其实也很简单,就一条命令,但能让你了解详细的工作过程,所以比较推荐这种方式:
最后 就是 ssh 登录服务器,验证自己的公钥是否成功上传了,执行下列命令:
当然也可以指定私钥文件,比如 :
如果登录的时候还是让你输入口令,则很有可能是ssh服务器上的 ~/.ssh/authorized_keys 权限有问题,请检查下。
如果还是遇到登录失败的问题,可以在ssh服务器上查看日志,比如:
相关文章:
使用密钥登录可以提高服务器安全性,因为密钥不容易被破解和窃取。与使用密码登录不同,密历笑钥不会在网络上传输,从而避免了密码被窃取的风险。此外,使用密码登录需要输入明文密码,极易被攻击者截获。而使用密钥登录则消除了这一风险。如果使用密钥登录,被破解的机会将会小得多,并且使攻击者无法强制使用某个特定的密码进行登录。总之,使用密钥笑历登录比使用密码肢升含登录更加安全。
在非对称加密技术中,有两种密钥,分为私钥和公钥,渗绝私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥用来给数据加密,用公钥加密的数据只能使用私钥解密
用来解密公钥加密的数据。
对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得
使用私卖让钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。
数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密。),得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。
是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。
公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:
1、客户端生成RSA公钥和私钥
2、客户端将自己的公钥存放到服务器
3、客户端请求连接服务器,服务器将一个随机字符串加密后发送给客户端
4、客户端根据自己的私钥解密这个随机字符串之后再发送给服务器
5、服务器接受到字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。
进入用户目录下.ssh目录:
id_rsa:私钥文件
id_rsa.pub:公钥文件
authorized_keys: 保存其他公钥的的文件
known_hosts: 已经建立过连接的服务器信息,可以清空。
1.执行命令:
此时会重新生成id_rsa私钥文件和id_rsa.pub公钥文件
用户将公钥发送给其他服务器,其他服务器将接受的公钥保存在authorized_keys里面。持有私钥的用户就可以登录服务器(authorized_keys存放自己的公钥,用户便可以使用私钥从其他的地方登录服务器)。丛配姿
2.将公钥导入到vps
3.修改SSHD的配置文件/etc/ssh/sshd_config
4.重启SSH后进行测试