Linux (一) SSH 使用
1、安装
如果你的服务器上没有ssh服务的话,可以使用以下命令(一般来说购买的阿里云、腾讯云自动就装好了这个)
yum install openssh-server (安装过程种我们可以发现openssh-clients 客户端也已经装好了)
service sshd start 启动ssh服务
chkconfig sshd on 设置开机启动
2、连接服务器
确认安装好ssh并启动后,我们在windows、mac上或者其他linux服务器上通过以下命令便可以连接到这台主机
ssh root@192.168.0.105
root 表示你连接改服务器的用户名
192.168.0.105 是服务器ip。这个ip不能使用内网ip,如果是本地虚拟机的话,可以将连接方式改为“桥接”的方式。然后用ifconfig查看本机公网ip
ssh连接服务器.png
3、ssh 的 config 文件
先展示一下SSH config 语法关键字,如下五个:
Host 别名
HostName 主机名
Port 端口
User 用户名
IdentityFile 密钥文件的路径
这个config的路径在服务的位置是 ~/.ssh/config 如果没有找到这个文件,就在.ssh/文件夹下新建一个
那么说到这个文件我们怎么用呢?实际上在平时的运维管理中,我们可能管理多台机器,可能是几台、十几台甚至几十上百台。我们将这些服务器配置在config中,方便我们去连接和管理。
例子如下,我配置了这样(IdentityFile可以暂时不配置,ssh默认端口为22)
host "KatoUyi"
HostName 192.168.0.105
User root
Port 22
IdentityFile ~/.ssh.id_rsa.pub
IdentitiesOnly yes
host "NagaSiren"
HostName 192.168.0.106
User root
Port 22
在配置了这个文件之后,我们不需要再通过 ssh root@192.168.0.105 这个命令去连接服务器了,我们可以这么写连接语句 ssh KatoUyi 。这样管理方式在一定程度上简化了我们的操作。
4、ssh key (SSH安全免密码登录)
我们需要先了解一些基础
ssh key使用对称加密的方式生成公钥和私钥
私钥存放在本地 ~/.ssh 目录下
公钥可以对外开放,放在服务器的 ~/.ssh/authorized_keys
在上一节的操作当中,我们发现每次使用ssh连接服务器的时候,都要输入一次密码。密码长了复杂了会很麻烦。我们可以使用ssh key去解决这个麻烦。
ssh-keygen -t rsa linux中生成密钥的指令
image.png
windows中生成密钥:可以在Xshell中也可以达到类似效果,这种方式生成了密钥之后,可以将之保存起来。
当然也可以通过其他方式例如git bash中用linux指令生成,在这里不详细描述了。
image.png
那么我们怎么使用这个生成好的ssh key呢。在Xshell中,我们之前连接服务器,在用户认证窗口使用的是password密码的方式去连接,现在我们切换成Public Key的方式,如下图
image.png image.png
实际上,在这个时候连接还少了很重要的一步,会出现 “所选的用户密钥未在远程主机上注册。请再试一次”的错误提示。为了达到免密码的登录过程,我们需要将公钥放置在authorized_keys 这个文件中。
我们需要先进入linux服务器,将我们选择的这个 id_rsa_2048.pub的内容放置到linux服务器的authorized_keys文件中。这样的话我们再访问就可以无密码连接了。
无密码连接成功.png
在linux连接别的linux的服务器的时候怎么做到免密呢?
首先先将本机的 rsa.pub公钥粘贴到目标服务器的 authorized_keys 中。然后执行以下命令
ssh-agent bash 下面指令不好使的话先执行这个
ssh-add ~/.ssh/私钥
完成了这个之后,就可以直接用 ssh root@192.168.0.106 直接连接服务器而不需要输入密码了
5、ssh 安全端口
端口安全指的是尽量避免服务器的远程连接端口被不法份子知道,为此而改变默认的服务端口号的操作。
在上一节中我们知道了SSH的默认端口是22。我需要将这个默认端口改掉。
对应需要修改的文件是 /etc/ssh/sshd_config 这里我们可以同时监听多个端口