linux关闭密码登录
公网机器存在被攻击的风险,经常会出现ssh登录的时候,由于密码输错次数过多而被锁住无法登录的情况。原因是公网IP被攻击,不断尝试ssh登录,导致密码输错次数过多。
规避方法有1. 修改默认端口号为非22端口, 2. 关闭密码登录功能,3. 配置防火墙,只允许指定IP的机器访问。此处介绍关闭密码登录,使用密钥登录方法。
基础操作
- 在客户端生成密钥对
ssh-keygen
,之后一直按回车即可。 - 将本地密钥对的公钥上传到服务器。
-
ssh-copy-id -i ~/.ssh/id_rsd.pub root@IP
。需要输入服务器的密码。如果ssh默认端口不是22,需要加-p 端口号
指定端口。 - 或者手动复制
~/.ssh/id_rsd.pub
中的内容到服务器的~/.ssh/authorized_keys
文件中。
- 直接免密登录。
ssh root@IP
。可以用-p 端口号
、-i key_file
分别指定端口号和密钥文件。 - 关闭密码登录。修改
/etc/ssh/sshd_config
文件,将PasswordAuthentication yes
改为no
,PubkeyAuthentication yes
改为yes
(如果为no的话),然后重启sshd服务systemctl restart sshd
即可。
注意:私钥文件的权限必须是600。
多环境配置
如果我们的服务器数量较多,每次要登录不同环境,且每个环境使用的密钥对不一致,则,可以通过`~/.ssh/config文件来对环境进行区分。
Host alias # 别名,之后可以通过ssh alias来直接登录
User user # 用户名
HostName IP # 服务端IP
Port port # 端口号,可省略,默认22
IdentityFile /xxx/your_key # 密钥文件,可省略,默认~/.ssh/id_rsd
ServerAliveInterval 360 # 会话保持时间,单位秒,可省略
跳板机
有时候,我们的目标机器不能直接连接,需要先登录跳板机然后在跳板机中登录目标机器。可以通过如下配置,然后ssh mubiaoji
直接连接目标机器。
Host tiaoban
Hostname 跳板机的ip
Port 跳板机的端口(如果是非22的需要填写)
User root(如果非root,换成跳板机的用户)
Host mubiaoji
Hostname 目标机的IP
Port 目标机的端口(如果是非22的需要填写)
User root(如果非root,换成目标机的用户)
ProxyCommand ssh -q -x -W %h:%p tiaoban
ProxyCommand用来指定连接到服务器的命令. 其可以是任何的命令,只要能从其标准输入读入数据,然后写出到标准输出即可。这条命令需要连接到sshd服务器上。
在不使用ProxyCommand的情况下,ssh会自己建立到目标机器22端口的连接.使用了ProxyCommand,那么使用指定命令来建立到目标机的连接,ssh直接使用已经建立的连接。
-W host:port 将client过来的标准输入和输出forward到host和port指定的地方.
这儿的%h表示要连接的目标机,也就是Hostname指定的ip或者主机名,%p表示要连接到目标机的端口.这儿可以直接写死固定值,但是使用%h和%p可以保证在Hostname和Port变化的情况下ProxyCommand这行不用跟着变化.
其他
- 有些机器设置了禁止root用户登录功能,开启方式为修改
/etc/ssh/sshd_config
文件中的PermitRootLogin no
为yes
。 - scp命令,可以通过
scp -i you_key_file xxx root@IP:/xxxx
来拷贝。
共有 0 条评论