环境介绍
操作系统:Ubuntu 20.04,CentOS 8,SUSE Linux SP3,Debian
软件版本:openssh
Ubuntu开启SSH服务
使用Ctrl+Alt+T打开终端,首先确定系统是否自带的有SSH工具
1 | dpkg -l |grep ssh #在已安装的程序中查找是否有ssh |
发现系统自带的只有openssh-client,因为要做服务端,所以需要安装openssh-server
1 | sudo apt-get update |
CentOS开启SSH服务
1 | rpm -qa |grep ssh #在已安装软件包中查看ssh是否安装 |
常见问题
开启SSH后使用工具无法连接
首先需要去看防火墙的状态,关闭防火墙后再试。
CentOS查看防火墙
1 | systemctl status firewalld.service #查看防火墙状态 |
部分Linux不支持root通过ssh远程登陆
有些Linux是不支持root用户使用ssh远程登陆的,比如Debian、Kali(采用Debian内核)
修改配置文件/etc/ssh/sshd_config
1、确认一下
#PasswordAuthentication yes #kali 默认情况下,该取值为 yes,不用修改
2、找到
#PermitRootLogin prohibit-password
并修改为
PermitRootLogin yes
3、重启ssh服务
1 | /etc/init.d/ssh restart |
4、设置ssh开机自启动
1 | update-rc.d ssh enable |
SecureCRT
初次使用
使用root用户,变更ssh客户端配置
1 | cd /etc/ssh |
使用root用户,变更ssh服务端配置
1 | vi sshd_config |
最后重启系统。
常见问题
初次连接报错
初次使用SecureCRT没有配置两个文件,就会报如下错误。
密钥交换失败。没有兼容的密钥交换方法。服务器支持以下方法:ecdh-sha2-nistp256、ecdh-sha2-nistp384、ecdh-sha2-nistp521、diffie-hellman-group-exchange-sha256
SecureCRT显示中文乱码解决方法
菜单栏里-选项-会话选项-外观
字符编码选项由默认改为UTF-8保存即可。
设置SSH远程登陆超时的时间(以SUSE Linux下为例)
1 | echo "export TMOUT=900" >> /etc/profile #设置15分钟超时写入配置文件,为0表示不超时 |
设置SSH通过密钥登陆
原理
利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。
操作步骤
1、制作密钥对(分Linux和Windows)
Linux环境
在要用密码登录的Linux服务器上制作,登录上后执行以下命令:
1 | ssh-keygen #建立密钥对 |
密钥锁码在使用私钥时必须输入,这样可以保护私钥不被盗用。当然也可以留空,实现无密码登录。
现在root用户的主目录中生成了一个.ssh的隐藏目录,内含两个密钥文件。id_rsa为私钥,id_rsa.pub为公钥。
Windows环境
最近的Windows 10开始支持openssh,之前的Windows都需要依赖第三方工具来生成,一般最常见的是通过git工具来生成,还有一种可以通过putty生成。
Windows 10下首先要确认是否安装了openssh, 依次在“设置”-“应用”-“管理可选功能”。 如果在出现的列表中没有看到“OpenSSH Client”,单击“添加功能”按钮并进行安装。 安装后可能需要重新启动PC。
安装OpenSSH后, 从“开始”菜单中打开命令提示符。 在终端窗口中输入“ssh-keygen”,然后按Enter键。 系统将提示您确认保存位置。 建议按Enter键以使用用户目录中的默认位置。 否则,键入要保存密钥的路径,然后按Enter键。现在可以选择向密钥添加密码。 如果你添加一个,你需要在使用密钥时提供它。 输入密码并按Enter键或立即按Enter键继续输入密码短语。
Windows现在将生成的RSA公钥/私钥对。 公钥将在指定的目录中存储为“id_rsa.pub”。 将此密钥上传到需要SSH的任何计算机。 然后,可以使用Windows的内置SSH客户端打开连接 - 键入“ssh user @ hostname”以使用生成的凭据进行连接和身份验证。
2、在需要登录的服务器上安装公钥
键入以下命令,在服务器上安装公钥:
1 | cd .ssh |
公钥安装完成,为了确保连接成功,确认一下文件的权限正确:
1 | chmod 600 authorized_keys |
3、设置SSH,打开密钥登录功能
编辑/etc/ssh/sshd_config文件
1 | RSAAuthentication yes #RSA认证 |
完成全部设置,并以密钥方式登录成功后,再禁用密码登录
1 | PasswordAuthentication no |
最后,重启SSH服务
1 | service sshd restart |
4、将私钥下载到客户端,然后转换为putty能使用的格式
使用FTP工具将私钥文件id_rsa下载到客户端,打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。
载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。
今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。