SSH 远程服务器连接服务
Summary: Author: 张亚飞 | Read Time: 4 minute read | Published: 2016-04-22
Filed under
—
Categories:
Linux
—
Tags:
SSH,
CentOS SSH
启动失败:
一次在
CentOS
安装Docker
后重启服务器出现连不上的问题,使用服务器提供的终端登录显示如下错误:
- 使用命令
lsof -i:22312
的时候发现居然没在监听22312
端口
Sun Nov 11 04:49:38 coam@v.cs.0:~$ sudo lsof -i:22312
- 查看系统日志:
Sun Nov 11 04:47:49 coam@v.cs.0:~$ sudo journalctl -u sshd -f
error: Bind to port 22312 on 0.0.0.0 failed: Permission denied.
localhost sshd[11016]: error: Bind to port 22312 on :: failed: Permission denied.
localhost sshd[11016]: fatal: Cannot bind any address.
CentOS还有另外一层保护,就是
SELinux
.执行一下semanage port -l | grep ssh
就会发现ssh
只允许监听22
Sun Nov 11 04:48:03 coam@v.cs.0:~$ sudo semanage port -l | grep ssh
ssh_port_t tcp 22
那我就把
22312
添加进列表里面:
semanage port -a -t ssh_port_t -p tcp 22312
- 最后重启
sshd
服务便解决问题
service sshd restart
CentOS 因为 SELinux
的问题导致 SSH
连接需要密码
一次在
CentOS
安装Docker
后,通过ssh
连接需要密码的问题:
- 首先看远处服务端的
用户目录
~/.ssh
~/.ssh/authorized_keys
权限:
Sun Nov 11 06:09:07 coam@v.cs.0:~/.ssh$ ll
drwxr-xr-x. 2 coam coam 4096 Jun 16 14:40 ./
drwxr-xr-x. 23 coam coam 4096 Nov 11 05:57 ../
-rwxr-xr-x. 1 coam coam 1203 Nov 11 05:04 authorized_keys*
-rw-------. 1 coam coam 57 Apr 17 2018 config
-rw-------. 1 coam coam 1679 Apr 17 2018 id_rsa
-rw-r--r--. 1 coam coam 391 Apr 17 2018 id_rsa.pub
-rw-r--r--. 1 coam coam 204 Apr 17 2018 known_hosts
显示权限没毛病
- 重新在客户端上传
~/.ssh/id_rsa.pub
公钥
ssh-copy-id coam@8.9.3.182 -p22312
重新连接后仍提示需要密码
- 使用调试模式连接远处服务端
ssh coam@8.9.3.182 -p22312 -v
- 在远程服务端关闭
sshd.service
并手动启动添加参数-d
开启调试模式:
sudo systemctl stop sshd
sudo /usr/sbin/sshd -d
...
发现手动启动是可以连接成功的.怀疑是启动方式有问题
- 修改
sshd
启动脚本/usr/lib/systemd/system/sshd.service
并改为调试模式重启运行:
#ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecStart=/usr/sbin/sshd -d $OPTIONS
使用
systemctl
模式启动运行并打印服务日志
sudo systemctl daemon-reload
sudo systemctl restart sshd
提示如下错误:
Nov 11 05:58:19 v.cs.0 sshd[5604]: debug1: trying public key file /data/home/coam/.ssh/authorized_keys
Nov 11 05:58:19 v.cs.0 sshd[5604]: debug1: Could not open authorized keys '/data/home/coam/.ssh/authorized_keys': Permission denied
显然
systemctl
模式启动有权限问题.
- 最后 Google 找到答案,原来是
SELinux
有问题
方案一: 关闭
SELinux
sudo setenforce 0
getenforce
Permissive
方案二: 设置
SELinux
参数
sudo setsebool -P use_nfs_home_dirs=1
sudo setenforce 1
getenforce
Enforcing
问题在于
SELinux
阻止sshd
打开文件.如果是CentOS.6
执行:restorecon -FRvv ~/.ssh
, 解决问题.
- 但在 CentOS.7 上以上方法不管用
该问题本质应该是
authorized_keys
文件的context
不正确,正常情况下应该是ssh_home_t
,如果是admin_home_t
则是错误的.可以使用estorecon
命令进行恢复.
- 首先通过命令
ls -alZ .ssh/
查看~/.ssh/
目录权属配置
Sun Nov 11 06:49:11 coam@v.cs.0:~$ ls -alZ .ssh/
drwxr-xr-x. coam coam system_u:object_r:default_t:s0 .
drwxr-xr-x. coam coam system_u:object_r:default_t:s0 ..
-rwxr-xr-x. coam coam system_u:object_r:default_t:s0 authorized_keys
-rw-------. coam coam system_u:object_r:default_t:s0 config
-rw-------. coam coam system_u:object_r:default_t:s0 id_rsa
-rw-r--r--. coam coam system_u:object_r:default_t:s0 id_rsa.pub
-rw-r--r--. coam coam system_u:object_r:default_t:s0 known_hosts
- 使用命令
chcon -Rv -t ssh_home_t ~/.ssh
修改文件的默认SELinux
属性配置
Sun Nov 11 06:49:25 coam@v.cs.0:~$ chcon -Rv -t ssh_home_t ~/.ssh
changing security context of ‘/data/home/coam/.ssh/config’
changing security context of ‘/data/home/coam/.ssh/id_rsa.pub’
changing security context of ‘/data/home/coam/.ssh/known_hosts’
changing security context of ‘/data/home/coam/.ssh/id_rsa’
changing security context of ‘/data/home/coam/.ssh/authorized_keys’
changing security context of ‘/data/home/coam/.ssh’
- 再次通过命令
ls -alZ .ssh/
查看~/.ssh/
目录权属配置
Sun Nov 11 06:49:43 coam@v.cs.0:~$ ls -alZ .ssh/
drwxr-xr-x. coam coam system_u:object_r:ssh_home_t:s0 .
drwxr-xr-x. coam coam system_u:object_r:default_t:s0 ..
-rwxr-xr-x. coam coam system_u:object_r:ssh_home_t:s0 authorized_keys
-rw-------. coam coam system_u:object_r:ssh_home_t:s0 config
-rw-------. coam coam system_u:object_r:ssh_home_t:s0 id_rsa
-rw-r--r--. coam coam system_u:object_r:ssh_home_t:s0 id_rsa.pub
-rw-r--r--. coam coam system_u:object_r:ssh_home_t:s0 known_hosts
重新 ssh 登录连接,解决问题.
SELinux 属性相关
- 查看文件的
SELinux
属性
Sun Nov 11 13:45:16 coam@v.cs.1:/data$ ls -alZ .
drwxr-xr-x. root root system_u:object_r:unlabeled_t:s0 .
dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
drwxr-xr-x. root root unconfined_u:object_r:unlabeled_t:s0 home
drwxrwxrwx. coam coam unconfined_u:object_r:unlabeled_t:s0 opt
- 恢复修改过的
SELinux
属性为默认属性,将unconfined_u
改为system_u
Sun Nov 11 13:49:39 coam@v.cs.1:/data$ restorecon -F -v *
restorecon reset /data/home context unconfined_u:object_r:unlabeled_t:s0->system_u:object_r:default_t:s0
restorecon reset /data/home context unconfined_u:object_r:unlabeled_t:s0->system_u:object_r:default_t:s0
restorecon reset /opt/data context unconfined_u:object_r:unlabeled_t:s0->system_u:object_r:default_t:s0
使用参数
restorecon -FRvv .
,将unconfined_u
改为system_u
,将unlabeled_t
改为default_t
,不建议带-R
参数.
- 再次查看
SELinux
属性配置
Sun Nov 11 13:50:20 coam@v.cs.1:/data$ ls -alZ .
drwxr-xr-x. root root system_u:object_r:unlabeled_t:s0 .
dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
drwxr-xr-x. root root system_u:object_r:default_t:s0 home
drwxrwxrwx. coam coam system_u:object_r:default_t:s0 opt
SSH 跳跳板机
现状: 139.106.161.42
不能使用 ssh
登录,只能通过 129.211.16.242
服务器登录,不能通过直接本地 Mac
本地电脑登录
目的: 本地 Mac 电脑通过跳板机器 129.211.16.242
直接登录 139.106.161.42
将本地 Mac
电脑和 129.211.16.242
的 .ssh/id_rsa.pub
拷贝到目标主机 ~/.ssh/authorized_keys
下
尝试在跳板机器下 129.211.16.242
登录目标机器 139.106.161.42
129.211.16.242
ssh worker@139.106.161.42
本地 Mac
电脑配置以下选项
.ssh/config
Host tcs
User coam
HostName 129.211.16.242
Port 22312
Host 139.106.161.42
HostName 139.106.161.42
ProxyCommand ssh tcs -W %h:%p
User worker
配置好后便可在本地电脑直接登录目标主机 139.106.161.42
ssh worker@139.106.161.42
【阿里云】通过SSH穿透jumpserver访问内部主机 PhpStorm SFTP使用SSH代理部署
Host bbs.1.vrs
HostName 103.234.22.131
Port 22
User worker
ProxyCommand ssh pcs -W %h:16000
RemoteCommand cd /apps/webroot/vrest && exec bash --login
RequestTTY yes
与以下命令等价
ssh -t -o ProxyCommand="ssh pcs -W %h:16000" -o RemoteCommand="cd /apps/webroot/vrest && exec bash --login" worker@103.234.22.131
登录 CentOS-6
服务器提示 ssh key 不支持
ssh root@1.server.iirii.com
错误信息
Unable to negotiate with 66.103.200.244 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
需要指定算法
ssh -oHostKeyAlgorithms=+ssh-dss root@1.server.iirii.com
或者在 ~/.ssh/config
添加以下配置
Host 1.server.iirii.com
HostName 1.server.iirii.com
HostKeyAlgorithms=+ssh-dss
SSH returns: no matching host key type found. Their offer: ssh-dss
github ssh clone 使用 proxy
代理
设置代理解决github被墙 通过配置 Git Proxy 加速克隆 Github 项目
ssh -T git@github.com
nc -v -x 0.wh.iirii.com:8810 0.wh.iirii.com 17422
nc -v -x 0.wh.iirii.com:8810 -X connect -P coam 0.wh.iirii.com 17422
#Host github.com
# User git
# Hostname github.com
# Port 22
# StrictHostKeyChecking no
# ProxyCommand nc -v -x 0.wh.iirii.com:8810 %h %p -P coam
# TCPKeepAlive yes
Comments