发现 ssh 把我卡了很久,自己的文档也没有专门写 ssh 的,这一个文档会持续专精更新 ssh 相关的技术文档。
有些企业是全 BMC 管理平台。没有 ssh 密码登录权限
sudo apt-get install openssh-server
检查SSH配置文件(通常是 /etc/ssh/sshd_config):
确保PermitRootLogin设置不是no,除非你想禁止root登录。
检查PasswordAuthentication是否设置为yes,如果设置为no,将不允许密码认证。
如果需要,可以设置AllowUsers或AllowGroups来限制哪些用户或用户组可以登录。
cat /etc/group
Windows 如何远程连接到不同的 Linux 设备
1安装git
https://git-scm.com/downloads
2安装完成后,右击桌面,点击打开git
输入cd 进入根目录,然后 cd .ssh 进入ssh配置文件中
输入
ssh-keygen
生成了一个本地编码公钥。
xxx.pub
3查看pub文件,并连接
将之前生成的这个文件里的内容复制到目标端的(linux) authorized_keys 文件中
4远程登录
最后
ssh <user>@<ip>
如果失败,需要检查目标端(linux)的 /etc/ssh/ sshd_config
配置文件
检查SSH服务器配置:
如果你有权限访问SSH服务器,检查/etc/ssh/sshd_config文件,确保没有禁用公钥认证(PubkeyAuthentication yes)
并且AuthorizedKeysFile指向了正确的文件。
确保/.ssh目录和authorized_keys文件的权限设置正确。通常,/.ssh目录的权限应该是700,而authorized_keys文件的权限应该是600。
ssh-keygen 说明
私钥文件
作用:私钥文件是安全的核心,它用于解密由公钥加密的数据,以及在SSH连接中验证用户的身份。私钥必须严格保密,不应泄露给任何人或未经授权的实体。
文件名:默认情况下,私钥文件名为id_rsa(如果使用RSA算法),但可以通过ssh-keygen命令的-f选项指定其他文件名。
存储位置:私钥文件默认保存在用户主目录下的.ssh目录中。
权限设置:为了安全起见,私钥文件的权限应设置为仅允许所有者读写(通常是600)。
公钥文件
作用:公钥文件用于加密数据,以便只有拥有相应私钥的用户才能解密。在SSH连接中,公钥被放置在远程服务器的~/.ssh/authorized_keys文件中,用于验证尝试连接的用户是否拥有与公钥配对的私钥。
文件名:默认情况下,公钥文件名为id_rsa.pub(如果使用RSA算法),但同样可以通过ssh-keygen命令的-f选项指定其他文件名,并添加.pub后缀以表示其为公钥文件。
存储位置:公钥文件默认也保存在用户主目录下的.ssh目录中,但通常会将其内容复制到远程服务器的~/.ssh/authorized_keys文件中以启用免密登录。
权限设置:虽然公钥文件本身不包含敏感信息,但出于安全考虑,其权限也应设置为仅允许所有者读写(通常是644)。然而,在将公钥内容添加到远程服务器的~/.ssh/authorized_keys文件时,该文件的权限应更为严格(通常是600),以确保只有授权用户才能访问。
交互流程
一、密钥生成与交换
密钥生成:
客户端(Client)和服务器(Server)各自生成一对密钥,即公钥(Public Key)和私钥(Private Key)。公钥可以公开,而私钥必须保密。
密钥生成通常使用RSA等非对称加密算法,确保加密和解密过程的安全性。
公钥交换:
在首次建立SSH连接时,服务器会将自己的公钥发送给客户端。
客户端验证服务器的公钥是否可信(通常通过比对公钥的指纹或将其保存在known_hosts文件中)。
客户端也将自己的公钥发送给服务器,服务器将其保存在authorized_keys文件中,用于后续的免密登录验证。
二、认证过程
客户端认证:
客户端使用服务器的公钥加密自己的登录信息(如用户名和密码),然后发送给服务器。
服务器使用自己的私钥解密登录信息,验证客户端的身份。
免密登录(基于公钥的认证):
客户端请求登录时,服务器会生成一个随机字符串(通常称为挑战码),并使用客户端的公钥加密后发送给客户端。
客户端使用自己的私钥解密挑战码,然后将解密后的挑战码与某个会话密钥一起使用哈希算法生成一个摘要(Digest)。
客户端将摘要发送给服务器,服务器使用相同的算法和会话密钥生成摘要,并与客户端发送的摘要进行比对。
如果摘要一致,则认证成功,服务器允许客户端登录,无需再输入密码。
三、会话建立与数据传输
会话建立:
认证成功后,客户端和服务器之间建立SSH会话。
会话过程中,双方协商使用的加密算法、消息认证码和压缩算法等。
数据传输:
在会话期间,客户端和服务器之间传输的所有数据都会使用之前协商的加密算法进行加密和解密。
加密过程确保数据的机密性和完整性,防止数据在传输过程中被窃取或篡改。
四、安全性与风险
安全性:SSH通过非对称加密和密钥交换技术确保了数据传输的机密性和完整性,同时提供了强大的身份认证机制。
风险:尽管SSH具有很高的安全性,但仍存在中间人攻击等风险。中间人攻击者可以截获客户端和服务器之间的通信,并冒充服务器向客户端发送伪造的公钥。为了防范这种风险,客户端应始终验证服务器的公钥是否可信。