理论:linux远程控制openssh详细讲解

前言:

创新互联网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为网站建设、成都网站建设,APP应用开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

  • SSH远程管理

    1.配置OpenSSH服务端

    2.使用SSH客户端程序

    3.密钥对验证的SSH体系

  • TCP Wrappers概述 (针对程序的管理机制)

    1.TCP Wrappers 概述

    2.TCP Wrappers访问策略

一 :openSSH服务器远程访问

1.1 ssh协议

  • 为客户机提供安全的shell环境,用于远程管理
  • 默认端口:TCP 22

1.2 openssh

  • 服务名称 :sshd
  • 服务端主程序: /usr/sbin/sshd
  • 服务端配置文件: /etc/ssh/sshd_config

第二种远程访问:telnet 也是远程访问,是不会经过加密的明文传输,可以用抓包工具直接获取其中的消息 23 tcp 端口;而ssh 是典型的密文访问

因此tlelent 主要应用于局域网;ssh皆可

第三种远程访问是远程桌面,3389端口号,带有图形化访问

例:mstsc命令 windows 中的远程桌面访问形式

通过远程访问的用户必须给其设置密码

vnc软件可以跨微软系统和linux系统之间连接

teamviewer软件 手机连接电脑

被远程方可以手动关闭拒绝远程

ssh_config 是针对客户端的

shhd_config是服务端

1.2 服务监听选项

  • 端口号、协议版本、监听IP地址
  • 禁用反向解析
[root@localhost ~]# vim /etc/ssh/sshd_config
......
#Port 22    '端口号(可以修改)'
#ListenAddress 0.0.0.0      '监听地址'
Protocol 2      '版本'
#UseDNS no      'DNS反向解析 否'

控制

  • 禁止ROOt用户、空密码用户 ————用户层面的控制
  • 登录时间、重试次数 ————用户属性的控制
  • AllowUsers、DenyUsers ————使用白黑名单控制

AllowUsers 白名单 :仅允许登陆

DenyUsers 黑名单 :仅拒绝登陆

[root@localhost ~]# vim /etc/ssh/sshd_config

#LoginGraceTime 2m      '登录时间2min 超过2min自动注销'
#PermitRootLogin yes    '允许root登陆 是 前面有#符号注释则不可以使用'
#StrictModes yes        '严格遵循标准模式 是'
#MaxAuthTries 6     '最大尝试登陆次数为 6'
#MaxSessions 10     '最大创建会话为 10'
PermitEmptPasswords no      '允许空密码登陆 否'
······
AllowUsers jerry admin@61.23.24.25      
'白名单,只允许以下用从指定终端登录,用户与用户之间用空格隔开'

AllowUsers的权限比DenyUsers的权限大,AllowsUsers不要与DenyUsers同时用

1.3 登陆验证

1.3.1 登陆验证对象

  • 服务器中的本地用户账号

1.3.2 登陆验证方式

  • 密码验证: 核对用户名、密码是否匹配
  • 密钥对验证: 核对客户的私钥、服务端公钥是否匹配

密钥对的方式需要自己去创建

密钥对里面包含公钥和私钥,合在一起叫密钥对

公钥给对方,私钥自己保留,这种方式叫做非对称密钥 rsa 相当于虎符

des 或aex或3des模式 是对称密钥,相当于门钥匙

[root@localhost ~]# vim /etc/ssh/sshd_config
······

#PubkeyAuthentication yes   '密钥对验证开启   是'
#PasswordAuthentication yes     '身份密码验证 是'
AuthorizedKeysFile      .ssh/authorized_keys    '密钥对公钥库文件路径'

启用密码密码验证、密钥对验证、指定公钥库位置

二 : 使用SSH客户端程序

2.1 ssh命令 ————远程安全登录

ssh user@host

ssh 被连接的主机的本地用户名@主机名

选项 -p 即 指定端口号

2.2 scp命令 ———— 远程安全复制

scp user@host:file 1 file2

复制目标主机下面的file文件到自己的file2下

scp file1 user@host:file2

复制自己的file1下的文件到目标主机的file1下

2.3 sftp命令 ————安全FTP上下载

sftp user@host

进入到目标主机的sftp模式

2.4.1 ssh命令 远程安全登录

test01 的ip地址为192.168.139.128

test02的ip地址为192.168.139.129

[root@test01 ~]# cd /etc/ssh    '切换到/etc/ssh目录下'
[root@test01 ssh]# ls
moduli       ssh_host_ecdsa_key      ssh_host_ed25519_key.pub
ssh_config   ssh_host_ecdsa_key.pub  ssh_host_rsa_key
sshd_config  ssh_host_ed25519_key    ssh_host_rsa_key.pub
[root@test01 ssh]# vim sshd_config  '编辑服务端配置文件'

    # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
 16 #
 17 Port 22 '端口号22,去掉#启用'
 18 #AddressFamily any
 19 #ListenAddress 0.0.0.0
 20 #ListenAddress ::
 21 
 22 HostKey /etc/ssh/ssh_host_rsa_key
 23 #HostKey /etc/ssh/ssh_host_dsa_key
 24 HostKey /etc/ssh/ssh_host_ecdsa_key
 25 HostKey /etc/ssh/ssh_host_ed25519_key
 26 
[root@test01 ssh]# systemctl restart sshd   '重启sshd服务'
[root@test02 ~]# ssh root@192.168.139.128   '连接开启远程服务的主机,以root身份登陆'
The authenticity of host '192.168.139.128 (192.168.139.128)' can't be established.
ECDSA'指密钥对' key fingerprint is SHA256:dXWxtS2ShXQgfb7R672V7+l3i7rGqHBbIB5MTcFnAws.
ECDSA'指密钥对' key fingerprint is MD5:59:fb:20:f0:28:96:5e:14:90:82:63:c9:ae:67:d6:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.139.128' (ECDSA) to the list of known hosts.
root@192.168.139.128's password: 
Last login: Wed Nov 20 17:13:57 2019
[root@test01 ~]#    '注意主机名,此时已经远程登陆成功'
[root@test01 ~]# ifconfig       '查看自身的i网卡(此时已经远程到test01上)'
ens33: flags=4163  mtu 1500
        inet 192.168.139.128  netmask 255.255.255.0  broadcast 192.168.139.255
[root@test01 ~]# exit       '退出'
logout
Connection to 192.168.139.128 closed.
[root@test02 ~]# ifconfig       '查看自身的主机名,test02的主机名'
ens33: flags=4163  mtu 1500
        inet 192.168.139.129  netmask 255.255.255.0  broadcast 192.168.139.255

[root@test02 ~]# ssh gsy@192.168.139.128    ''用gsy的身份去登陆,也可以
gsy@192.168.139.128's password: 
Last login: Wed Nov 20 18:07:37 2019    
[gsy@test01 ~]$ exit    '退出'
logout
Connection to 192.168.139.128 closed.

远程连接目标主机时,使用root或普通用户都可以

[root@test01 ssh]# vim /etc/ssh/sshd_config '配置28的sshd的服务端配置文件'

 38 PermitRootLogin no  '第38行取消注释符,root登陆否'

[root@test01 ssh]# systemctl restart sshd   '重启ssh服务以生效配置'
[root@test02 ~]# ssh root@192.168.139.128   '去连28,使用root身份,'
The authenticity of host '192.168.139.128 (192.168.139.128)' can't be established.
ECDSA key fingerprint is SHA256:dXWxtS2ShXQgfb7R672V7+l3i7rGqHBbIB5MTcFnAws.
ECDSA key fingerprint is MD5:59:fb:20:f0:28:96:5e:14:90:82:63:c9:ae:67:d6:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.139.128' (ECDSA) to the list of known hosts.
root@192.168.139.128's password: 
Permission denied, please try again.    '拒绝权限,请重试'
root@192.168.139.128's password: 
[root@test02 ~]#
[root@test02 ~]# ssh gsy@192.168.139.128    '使用gsy身份去连接,没问题'
gsy@192.168.139.128's password: 
Last login: Wed Nov 20 18:08:14 2019 from 192.168.139.129
[gsy@test01 ~]$ 
[gsy@test01 ~]$ su - root   '然后su切换到root'
Password: 
Last login: Wed Nov 20 18:30:29 CST 2019 on pts/5
Last failed login: Wed Nov 20 18:32:37 CST 2019 on pts/5
There was 1 failed login attempt since the last successful login.
[root@test01 ~]#    '成功'

permission denied 权限拒绝

为了不让普通用户与root之间随意切换,可以在服务端28 配置pam.d/su,启用pam.d/su后,不在wheel组内的用户无法

 [root@test01 ssh]# vim /etc/pam.d/su   '编辑对应的配置文件'

 6 auth           required        pam_wheel.so use_uid  '取消注释,启用pam.d的su功能'

[root@test01 ssh]# useradd lisi     '新创建用户lisi,该用户不在wheel组内'
[root@test01 ssh]# passwd lisi
Changing password for user lisi.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@test02 ~]# ssh lisi@192.168.139.128       '用29去链接28'
lisi@192.168.139.128's password: 
[lisi@test02 ~]$        'lisi登陆成功'
[lisi@test02 ~]$ su - root      'su 切换root'
密码:
su: 拒绝权限            '失败'
[root@test01 ssh]# vim /etc/ssh/sshd_config '给28配置sshd_config'

 21 AllowUsers gsy      '手动添加白名单,即只允许gsy登陆'
[root@test01 ssh]# systemctl restart sshd   '重启sshd服务'
[root@test02 ~]# ssh gsy@192.168.139.128    '以gsy身份,29远程28'
gsy@192.168.139.128's password: 
Last failed login: Wed Nov 20 18:51:43 CST 2019 from 192.168.139.129 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Nov 20 18:48:54 2019 from 192.168.139.128
[gsy@test01 ~]$ logout  '登陆成功,然后退出'
Connection to 192.168.139.128 closed.
[root@test02 ~]# ssh root@192.168.139.128       '以root身份29去远程28'
root@192.168.139.128's password:    '输入密码'
Permission denied, please try again.        '权限拒绝,请重试'
root@192.168.139.128's password: 
Permission denied, please try again.

2.4.2 scp 命令——远程安全复制

[root@test01 ssh]# vim /etc/hosts   '此时在28,以hosts文件为实验'

test01  192.168.139.128 '增加内容'
test02  192.168.139.129 '增加内容'
[root@test01 ssh]# vim /etc/ssh/sshd_config '去配置sshd'
#AllowUsers gsy         '取消白名单,即所有人都可登录'
PermitRootLogin no  '注释掉远程root登陆 否'

[root@test01 ssh]# systemctl restart sshd   '重启sshd服务'
[root@test02 ~]# ssh root@192.168.139.128   '以root身份29去远程28'
root@192.168.139.128's password: 
Last failed login: Wed Nov 20 19:05:55 CST 2019 from 192.168.139.129 on ssh:notty
There were 8 failed login attempts since the last successful login.
Last login: Wed Nov 20 18:41:42 2019    '登陆成功'
[root@test01 ssh]# scp /etc/hosts root@192.168.139.129:etc/hosts    
'此时在28上,scp复制 本地 /etc/hosts文件 到29:/etc/hosts'
The authenticity of host '192.168.139.129 (192.168.139.129)' can't be established.  
ECDSA key fingerprint is SHA256:+uy+1TNy69jB97B7+AoYqhNEaBi42DuOYb0oE4pJ8s0.
ECDSA key fingerprint is MD5:00:78:0c:c1:c2:7b:01:45:7c:31:c2:3b:53:4d:5c:10.
Are you sure you want to continue connecting (yes/no)? yes  '询问是否连接,选择是'
Warning: Permanently added '192.168.139.129' (ECDSA) to the list of known hosts.
root@192.168.139.129's password: 
hosts                                     100%  204    87.9KB/s   00:00    '显示进度'
[root@test01 ssh]# 
[root@test01 ssh]# ssh root@192.168.139.129     '以root身份28远程29'
root@192.168.139.129's password: 
Last login: Wed Nov 20 19:18:41 2019 from 192.168.139.129
[root@test02 ~]# cat /etc/hosts     '查看29下的/etc/hosts文件'
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
test01  192.168.139.128
test02  192.168.139.129
[root@test02 ~]# logout     '注销登陆'
Connection to 192.168.139.129 closed.
[root@test01 ssh]# cd /opt/
[root@test01 opt]# ls
rh
[root@test01 opt]# touch abc.txt    '在本地创建空文件'
[root@test01 opt]# scp /opt/abc.txt root@192.168.139.129:/home/
'把本地的/opt/abc.txt文件 以root身份 复制到192.168.139.129主机的/home/目录下'
root@192.168.139.129's password:    '密码确认'
abc.txt                                   100%    0     0.0KB/s   00:00    
[root@test01 opt]# 
[root@test02 ~]# cd /home
[root@test02 home]# ls
abc.txt  gsy
[root@test02 home]# vim /etc/ssh/sshd_config    '修改sshd_config服务端配置'
Port 22     '开启接口'
[root@test02 home]# systemctl restart sshd  '重启'
[root@test02 home]# mkdir abc
[root@test01 opt]# scp /opt/abc.txt gsy@192.168.139.129:/home/abc/
gsy@192.168.139.129's password: 
scp: /home/abc//abc.txt: Permission denied  '复制失败'
[root@test02 home]# ls -al
total 0
drwxr-xr-x.  4 root root  43 Nov 20 19:32 .
dr-xr-xr-x. 17 root root 224 Oct 24 15:42 ..
'drwxr-xr-x.  2 root root   6 Nov 20 19:32 abc  '权限不够'
-rw-r--r--.  1 root root   0 Nov 20 19:22 abc.txt
drwx------.  3 gsy  gsy   78 Oct 24 15:36 gsy
[root@test02 home]# chmod 777 abc
[root@test02 home]# ls -al
total 0
drwxr-xr-x.  4 root root  43 Nov 20 19:32 .
dr-xr-xr-x. 17 root root 224 Oct 24 15:42 ..
'drwxrwxrwx.  2 root root   6 Nov 20 19:32 abc
-rw-r--r--.  1 root root   0 Nov 20 19:22 abc.txt
drwx------.  3 gsy  gsy   78 Oct 24 15:36 gsy
[root@test02 home]# 
[root@test01 opt]# scp /opt/abc.txt gsy@192.168.139.129:/home/abc/
'重试'
gsy@192.168.139.129's password:     '可以了'
abc.txt                                   100%    0     0.0KB/s   00:00  

然后到29主机上查看验证

[root@test02 home]# ls -al abc  
total 0
drwxrwxrwx. 2 root root 21 Nov 20 19:38 .
drwxr-xr-x. 4 root root 43 Nov 20 19:32 ..
'-rw-r--r--. 1 gsy  gsy   0 Nov 20 19:38 abc.txt

以什么用户传过去的,就会以该用户的属主写入

[root@test01 opt]# scp root@192.168.139.129:/home/gsy.txt /opt
'在28上,从29主机上以root身份去复制/home/gsy.txt文件 到/opt下'
root@192.168.139.129's password:    
gsy.txt                     '成功'       100%    4     1.4KB/s   00:00  
[root@test01 opt]# ls -l
total 4
-rw-r--r--. 1 root root 0 Nov 20 19:21 abc.txt
'-rw-r--r--. 1 root root 4 Nov 20 19:46 gsy.txt'
drwxr-xr-x. 2 root root 6 Mar 26  2015 rh
[root@test01 opt]# cat gsy.txt 
gsy
[root@test01 opt]# 

想要ssh远程其他,就需要吧其他的的权限放开

2.4.3 sftp命令 ————安全FTP上下载

[root@test01 ~]# sftp root@192.168.139.129      'ftp上下载方式连接29'
root@192.168.139.129's password: 
Connected to 192.168.139.129.
sftp> 
sftp> ls -a
.                        ..                       .ICEauthority            
.Xauthority              .bash_history            .bash_logout             
.bash_profile            .bashrc                  .cache                   
.config                  .cshrc                   .dbus                    
.esd_auth                .local                   .mozilla                 
.ssh                     .tcshrc                  .viminfo                 
anaconda-ks.cfg          initial-setup-ks.cfg     下载                   
公共                   图片                   文档                   
桌面                   模板                   视频                   
音乐                   
sftp> cd /opt
sftp> ls
rh  
sftp> mkdir aaa
sftp> ls
aaa  rh   
sftp> rm -rf aaa
rm: Invalid flag -r
sftp> 
ls
aaa  rh   
sftp> 
sftp>  help
Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-afPpRr] remote [local]       Download file
reget [-fPpRr] remote [local]      Resume download file
reput [-fPpRr] [local] remote      Resume upload file
help                               Display this help text
lcd path                           Change local directory to 'path'
lls [ls-options [path]]            Display local directory listing
lmkdir path                        Create local directory
ln [-s] oldpath newpath            Link remote file (-s for symlink)
lpwd                               Print local working directory
ls [-1afhlnrSt] [path]             Display remote directory listing
lumask umask                       Set local umask to 'umask'
mkdir path                         Create remote directory
progress                           Toggle display of progress meter
put [-afPpRr] local [remote]       Upload file
pwd                                Display remote working directory
quit                               Quit sftp
rename oldpath newpath             Rename remote file
rm path                            Delete remote file
rmdir path                         Remove remote directory
symlink oldpath newpath            Symlink remote file
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help
sftp> rmdir aaa
sftp> ls
rh  
sftp> 

在sftp模式下,命令跟linux的命令有些不一样

三 : 构建密钥对验证的SSH体系

理论 :linux远程控制 openssh详细讲解

理论 :linux远程控制 openssh详细讲解

理论 :linux远程控制 openssh详细讲解

理论 :linux远程控制 openssh详细讲解

理论 :linux远程控制 openssh详细讲解

理论 :linux远程控制 openssh详细讲解

[root@test02 ~]# ssh-keygen rsa     ‘创建密钥对的选项’
Too many arguments.
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
       ssh-keygen -i [-m key_format] [-f input_keyfile]
       ssh-keygen -e [-m key_format] [-f input_keyfile]
       ssh-keygen -y [-f input_keyfile]
       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
       ssh-keygen -B [-f input_keyfile]
       ssh-keygen -D pkcs11
       ssh-keygen -F hostname [-f known_hosts_file] [-l]
       ssh-keygen -H [-f known_hosts_file]
       ssh-keygen -R hostname [-f known_hosts_file]
       ssh-keygen -r hostname [-f input_keyfile] [-g]
       ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
       ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
                  [-j start_line] [-K checkpt] [-W generator]
       ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
                  [-O option] [-V validity_interval] [-z serial_number] file ...
       ssh-keygen -L [-f input_keyfile]
       ssh-keygen -A
       ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                  file ...
       ssh-keygen -Q -f krl_file file ...
[root@test02 ~]# ssh-keygen -t rsa      '创建密钥对 -t '
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ZL4EmtVT8fXoCPScBgL7bldPv380zK93PQnA9kmORF8 root@test02
The key's randomart image is:
+---[RSA 2048]----+
|      ... =.  .  |
|       o + * o E |
|      + = + B o .|
|     + * . B =   |
|    o   S o O *  |
|       o . o B =.|
|        + .   o.*|
|       . .     oB|
|              .+*|
+----[SHA256]-----+
[root@test02 ~]# ls -a
.                .bash_logout   .dbus                 .ssh         图片
..               .bash_profile  .esd_auth             .tcshrc      文档
123123           .bashrc        .ICEauthority         .viminfo     桌面
123123.pub       .cache         initial-setup-ks.cfg  .Xauthority  模板
anaconda-ks.cfg  .config        .local                下载         视频
.bash_history    .cshrc         .mozilla              公共         音乐

[root@test02 ~]# cd .ssh
[root@test02 .ssh]# ls
id_rsa  id_rsa.pub  known_hosts
[root@test02 .ssh]# ssh-copy-id -i id_rsa.pub gsy@192.168.139.128       
'复制密钥对的公钥复制到28服务端,以gsy身份'
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
gsy@192.168.139.128's password:     '输入密码'

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'gsy@192.168.139.128'"
and check to make sure that only the key(s) you wanted were added.
[root@test01 ~]# cd /home/gsy
[root@test01 gsy]# ls
下载  公共  图片  文档  桌面  模板  视频  音乐
[root@test01 gsy]# ls -a
.              .bash_logout   .cache     .ICEauthority  .ssh  图片  模板
..             .bash_profile  .config    .local         下载  文档  视频
.bash_history  .bashrc        .esd_auth  .mozilla       公共  桌面  音乐
[root@test01 gsy]# cd .ssh
[root@test01 .ssh]# ls      '验证是否成功复制到28服务端'
authorized_keys
[root@test02 ~]# ssh gsy@192.168.139.128    '再次远程登陆服务端28'
Enter passphrase for key '/root/.ssh/id_rsa':   '输入之前输入的密码'
Last failed login: Wed Nov 20 20:17:55 CST 2019 from 192.168.139.129 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Nov 20 18:51:51 2019 from 192.168.139.129
[gsy@test01 ~]$     '登陆成功'
[gsy@test01 ~]$ exit
logout
Connection to 192.168.139.128 closed.
[root@test02 ~]# ls -a
.                .bash_logout   .dbus                 .ssh         图片
..               .bash_profile  .esd_auth             .tcshrc      文档
123123           .bashrc        .ICEauthority         .viminfo     桌面
123123.pub       .cache         initial-setup-ks.cfg  .Xauthority  模板
anaconda-ks.cfg  .config        .local                下载         视频
.bash_history    .cshrc         .mozilla              公共         音乐
[root@test02 ~]# ls -a .ssh
.  ..  id_rsa  id_rsa.pub  known_hosts
[root@test02 ~]# ssh-agent bash     '创建自动代理功能'
[root@test02 ~]# ssh-add    '免交互'
Enter passphrase for /root/.ssh/id_rsa:     '输入密码确认'
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@test02 ~]# 
[root@test02 ~]# ssh gsy@192.168.139.128    '再次以gsy身份去登陆28服务端'
Last login: Wed Nov 20 21:33:22 2019 from 192.168.139.130   '网络被切换,客户机IP地址改变'

ssh-agent bash 创建自动代理功能

ssh-add 免交互

可以用于在shelle脚本远程

四 :TCP Wrappers 概述

理论 :linux远程控制 openssh详细讲解

4.1 保护机制的实现方式

  • 方式1 : 通过tcpd主程序对其他服务程序进行包装
  • 方式2 : 有其他服务程序调用libwrap.so.*链接库

4.2 访问控制策略的配置文件

  • /etc/hosts.allow
  • /etc/hosts.deny

其中,ssh就是能够被它管控的服务

[root@test01 .ssh]# ldd `which sshd`
        linux-vdso.so.1 =>  (0x00007ffd5eb16000)
        libfipscheck.so.1 => /lib64/libfipscheck.so.1 (0x00007f4e20f2b000)
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f4e20d20000)
        libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f4e20af7000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00007f4e208e8000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4e206c1000)
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f4e20698000)
        libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f4e20237000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f4e20033000)
        libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007f4e1fdde000)
        liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007f4e1fbcf000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f4e1f9cc000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f4e1f75000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f4e1f57e000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f4e1f364000)
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f4e1f116000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f4e1ee2e000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f4e1ebfb000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f4e1e9f6000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f4e1e633000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f4e1e41a000)
        libcap-ng.so.0 => /lib64/libcap-ng.so.0 (0x00007f4e1e213000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f4e1dfb1000)
        /lib64/ld-linux-x86-64.so.2 (0x0000562f68c55000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007f4e1ddac000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f4e1daa9000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f4e1d8a1000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f4e1d67b000)
        libgcrypt.so.11 => /lib64/libgcrypt.so.11 (0x00007f4e1d3f9000)
        libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f4e1d1f4000)
        libdw.so.1 => /lib64/libdw.so.1 (0x00007f4e1cfad000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4e1cd96000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4e1cb7a000)
        libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007f4e1c95d000)
        libssl3.so => /lib64/libssl3.so (0x00007f4e1c710000)
        libsmime3.so => /lib64/libsmime3.so (0x00007f4e1c4e9000)
        libnss3.so => /lib64/libnss3.so (0x00007f4e1c1bf000)
        libnssutil3.so => /lib64/libnssutil3.so (0x00007f4e1bf91000)
        libplds4.so => /lib64/libplds4.so (0x00007f4e1bd8d000)
        libplc4.so => /lib64/libplc4.so (0x00007f4e1bb88000)
        libnspr4.so => /lib64/libnspr4.so (0x00007f4e1b949000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007f4e1b746000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f4e1b537000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f4e1b333000)
        libattr.so.1 => /lib64/libattr.so.1 (0x00007f4e1b12d000)
        libelf.so.1 => /lib64/libelf.so.1 (0x00007f4e1af15000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f4e1ad04000)

查询功能模块 `后面接命令

五 : TCP Wrappers 策略应用

5.1 设置访问控制策略

  • 策略格式 : 服务列表:客户机地址列表
  • 服务列表
    • 多个服务以逗号分隔,ALL表示所有服务
  • 客户机地址列表
    • 多个地址以逗号分隔,ALL表示所有地址
    • 允许使用通配符?和*
    • 网段地址,如192.168.4. 或者192.168.4.0/255.255.255.0
    • 区域地址,如 .bennet,com

5.2 策略的应用顺序

  • 先检查hosts.allow,找到匹配则允许访问
  • 否则再检查hosts.deny,找到则拒绝访问
  • 若两个文件中均无匹配策略,则默认允许访问
  • 禁止其他所有地址访问受保护的服务
[root@localhost ~]# echo "sshd:61.63.65.67,192.168.2.*" > /etc/hosts.allow
[root@localhost ~]# vi /etc/hosts.allow
sshd:61.63.65.67,192.168.2.*

[root@localhost ~]# echo "sshd:ALL" > /etc/hosts.deny
[root@localhost ~]# vi /etc/hosts.deny
sshd:ALL

[root@localhost ~]# 

优先读取allow,然后再度deny

如果只想禁止某些主机登陆,则只做黑名单,白名单不写

小结:

ssh 22端口

服务端配置文件 /etc/ssh/sshd_config

Port 22     '端口号'
ListenAddress 192.168.155.155   '监听地址'
Protocol 2      '版本号'
UserDNS no      'DNS反向解析,否'
LoginGraceTime  2m      '登陆时间 2m'
PermitRootLogin no      '允许root登陆 否'
MaxAuthTries 6          '最大尝试登陆次数 6 次'
PermitEmptyPasswords no     '禁止空密码'
AllowUsers gsy  lisi@192.168.88.88  
'只允许gsy登陆,lisi从192.168.88.88登陆,别人都不行'
PasswordAuthentication yes  '需要密码验证 是'
PubkeyAuthentication yes    '开启密钥对验证 是'
AuthorizedKeyFile .ssh/authorized_keys '密钥对文件位置'

远程登陆

ssh 用户名@ip地址 -p 指定端口号

远程复制

scp 要复制的文件 复制到的目标位置

scp 用户名@ipdizhi:源文件路径 目标路径

远程上下载

sftp 用户名@ip地址

ssh中构建密钥对

ssh-keygen -t rsa(或dsa算法) 创建密钥对

ssh-copy -i 公钥文件路径 用户名@目标ip地址

ssh-copy -i ~/.ssh/id_rsa.pub gsy@192.168.88.88

ssh-agent bash 创建自动代理功能

ssh-add 免交互

TCP Wrappers 保护主程序

ldd ·which sshd·

访问控制策略的配置文件

/etc/hosts.allow

/etc/hosts.deny

如果做黑名单,白名单可以不写


本文名称:理论:linux远程控制openssh详细讲解
分享路径:http://myzitong.com/article/pdcghe.html