美文网首页
命令ssh 安全隧道/端口转发

命令ssh 安全隧道/端口转发

作者: 极客圈 | 来源:发表于2017-10-10 09:44 被阅读0次

    有待整理

    SSH协议

    通过公钥加密技术实现服务器身份验证。

    • 安全的隧道
      SSH会自动加密和解密所有SSh客户端与服务端之间的网络数据。这一过程也称tunneling(隧道)
      因为SSH为其他TCP连接提供了一个安全的通道来进行传输:Telnet,SMTP,LDAP等TCP应用,避免了明文传输(用户名/密码等敏感信息)

    • SSH端口转发TCP端口
      端口转发可以“绕过“防火墙对端口的直接限制
      防火墙限制了某些网络端口,但是允许SSH的连接:
      加密SSH Client端至SSH Server端之间的通讯数据,建立TCP连接。

    • 远程登录
      通过scp或sftp实现备份和远程文件传输等的推荐安全协议。
      SSH保证两个网络或两个系统之间数据交互的机密性和完整性。

    ssh软件

    • sshd - 服务端 默认监听22端口,提供服务
    • ssh - Linux Shell下自由软件OpenSSH套件中的客户端连接工具
    • Xshell - win下的ssh客户端

    ssh [option]

    -1:强制使用ssh协议版本1;
    -2:强制使用ssh协议版本2;
    -4:强制使用IPv4地址;
    -6:强制使用IPv6地址;
    -A:开启认证代理连接转发功能;
    -a:关闭认证代理连接转发功能;
    -b:使用本机指定地址作为对应连接的源[ip](http://man.linuxde.net/ip)地址;
    -C:请求压缩所有数据;
    -F:指定ssh指令的配置文件;
    -f:后台执行ssh指令;
    -g:允许远程主机连接主机的转发端口;
    -i:指定身份文件;
    -l:指定连接远程服务器登录用户名;
    -N:不执行远程指令;
    -o:指定配置选项;
    -p:指定远程服务器上的端口;
    -q:静默模式;
    -X:开启X11转发功能;
    -x:关闭X11转发功能;
    -y:开启信任X11转发功能。
    

    默认配置文件和SSH端口

    /etc/ssh/sshd_config #OpenSSH服务器配置文件
    
    /etc/ssh/ssh_config #OpenSSH客户端配置文件
    
    ~/.ssh/ #用户SSH配置目录
    
    ~/.ssh/authorized_keys #用户公钥 RSA或DSA
    
    /etc/nologin #如果存在这个文件,sshd会拒绝除root用户外的其它用户登录
    
    /etc/hosts.allow和/etc/hosts.deny #定义tcp-wrapper执行的访问控制列表
    

    修改默认配置 - OpenSSH服务器配置文件

    编辑配置文件:去掉最前面的#号,保存

    vi /etc/ssh/sshd_config
    
    #Port  22
    修改端口号
    
    #PermitRootLogin yes   #将yes修改成no
    禁止root登录 - - - 通常用普通用户登录,需要管理远程主机时再切换到root用户。不直接用root超级权限登录,有安全隐患
    
    #Protocol 2,1   #修改为Protocol 2 
    仅允许SSH协议版本2  - - - SSH协议版本1有安全问题:中间人攻击(man-in-the-middle),注入(insertion)攻击
    
    #Banner /some/path
    设置登录时提示信息 - - - 将提示文本文件banner.xt文件的完整路径,替换掉/some/path
    
    MaxAuthTries 3  #最大登录次数   密码错误超过3次拒绝登录
    
    #重启服务
    /etc/init.d/ssh restart
    

    ssh登录

    常用格式:
    ssh [-l login_name] [-p port] [user@]hostname

    ssh://用户名:密码@IP:端口

    
    #指定用户登录
    ssh root@192.168.0.11
    ssh -l root 192.168.0.11
    
    ssh 192.168.0.11#不指定用户时,默认为本机用户名
    
    #指定端口
    ssh name@remoteserver -p 2222
    ssh remoteserver -l name –p 2222
    
    

    ssh运行命令

    ssh -l username remoteserver command
    
    ssh host -l user $(<cmd.txt)     #复杂的远程shell命令
    ssh host -l user “`cat cmd.txt`”  #更具移植性
    

    比较远程和本地文件的差异

    ssh user@host cat /path/to/remotefile | diff /path/to/localfile –
    

    开启隧道 从某主机的80端口到本地主机2001端口的

    ssh -N -L 2001:localhost:80 somemachine
    

    本地主机执行命令后,在浏览器中输入http://localhost:2001即可访问服务器80端口上的网站

    无密码SSH登录

    ssh-keygen; #先使用ssh-keygen命令生成 密钥
    
    ssh-copy-id userTom@host   #复制SSH密钥到目标主机
    
    ssh userTom@host  #无密码即可登录
    

    通过跳板机(host1) 操作无法直接访问的远程主机host2

    在此过程中要先输入host1的密码,再输入host2的密码,就可操作host2

    ssh -t host1 ssh host2
    

    端口映射

    假如公司内网有1台web服务器,名为webserver,但是只对内不对外,外网就无法直接访问,但可用ssh进行端口映射来实现外网访问内网的web服务器

    ** webserver可以用ssh登录到 远端主机remoteserver**:

    • 查看remoteserver是否开通3000端口netstat -an|grep 3000 没被占用就继续

    • 映射

    ssh -R  3000:localhost:80  remoteserver
    

    尝试打开内网服务器webserver上的网页

    w3m http://127.0.0.1:3000/
    

    如果能打开界面,说明映射成功.但这只能remoteserver机器访问webserver

    因为3000端口绑定的是remoteserver机器的127.0.0.1端口。

    可以编辑remoteserver机器上的/etc/ssh/sshd_config文件并添加如下内容:

    添加内容GatewayPorts yes
    把监听端口3000绑定到 0.0.0.0 地址上,这样外部的所有机器都能访问到这个监听端口,然后保存退出。重启ssh服务。
    此时其它机器就可以访问内网的webserver,浏览器打开
    http://remoteserver:3000/

    scp - 传送文件 【本地主机】执行该命令!

    • 远程主机的/tmp/test 文件 复制到 本地主机的/bak文件夹下
      scp -p root@192.168.1.120:/tmp/test /bak

    • 远程主机的/root/lnmp0.4/ 目录 复制到 本地主机的目录
      scp -P 2222 -r root@www.tom.net:/root/lnmp/ /home/lnmp/

    • 将本地/bak/1234 文件 复制到 远程主机的/tmp路径下
      scp -p /bak/1234 root@192.168.1.120:/var/www/html

    -p
    保留原始文件的修改时间等
    Preserves modification times, access times, and modes from the original file.

    -r
    Recursively copy entire directories. Note that scp follows symbolic links(软连接) encountered in the tree traversal.

    -P port
    更改了SSH默认端口后的端口,没改不用写该参数。
    Specifies the port to connect to on the remote host. Note that this option is written with a capital ‘P’, because -p is already reserved for preserving the times and modes of the file in rcp(1).

    sftp

    禁用/删除openssh-server

    CentOS / RHEL / Fedora Linux用户可以使用下面的yum命令禁用和删除openssh-server:

    chkconfig sshd off
    
    yum erase openssh-server
    

    相关文章

      网友评论

          本文标题:命令ssh 安全隧道/端口转发

          本文链接:https://www.haomeiwen.com/subject/apjgattx.html