ssh配置及端口转发

  • 生成密钥

    1. 默认密钥

       ssh-keygen -t rsa -C [email protected]
      
    2. 生成自定义文件名密钥
       ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C [email protected]
      
    3. 多密钥配置

      添加文件~/.ssh/config,内容如下

       Host test-github                        #网站本地别称,建议设置成网站域名,该行不要直接复制,具体见下文
       Hostname github.com                     #网站实际地址
       IdentityFile ~/.ssh/test-github         #密钥路径
       User zcw
      
    4. 多密钥测试
       ssh -v [email protected]
      

      @符号后面的地址需要使用config文件中的 host 的值,而不是 hostname ,所以说建议设置成一样,测试连接 github.com 不行,这个大坑

  • sshd安全

    vi /etc/ssh/sshd_config

      X11Forwarding no  #
      PermitEmptyPasswords no     # 禁止空密码
      MaxStartups  10             # 最多保持多少个未认证的连接,防止SSH拒绝服务
      PermitRootLogin no          # 禁止root登录,否则很容易被用来暴力猜解
    
  • ssh端口转发

    场景举例

    pc net ip lan ip service
    dev / 192.168.31.60 tomcat:8080
    [email protected] 106.12.13.14 192.168.0.100 mongodb:27017
    [email protected] / 192.168.0.101 mysql:3306
    • dev为本地开发机器,家庭宽带,无固定公网ip,运行tomcat服务,端口是8080
    • [email protected]为阿里云服务器,有固定公网ip,运行mongodb服务,端口是27017
    • [email protected]为阿里云服务器,无外网,和[email protected]在同一局域网,运行mysql服务,端口是3306
    1. 代理服务器

      TODO

    2. 访问本地特定端口,访问远程指定服务
      • 需求示例1:从dev机器访问[email protected]上的mongodb服务
       # 加上-f,在后台执行
       ssh [email protected] -C -N -g -L 27018:localhost:27017
      
      • 需求示例2:从dev机器访问[email protected]上的mysql服务,利用[email protected]作为跳板机
       ssh [email protected] -C -N -g -L 13306:192.168.0.101:3306
      
    3. ssh远程端口转发,访问远程特定端口,访问本地指定服务
       [email protected]上需编辑/etc/ssh/sshd_config,修改GatewayPorts为yes,更多请查看man sshd_config
      
      • 需求示例:从[email protected]访问本地dev机器的tomcat服务
       ssh [email protected] -C -N -g -R
           localhost:18080:localhost:8080     # 访问远程18080端口,即本地8080的服务
           -o ExitOnForwardFailure=yes
           -o ServerAliveInterval=60           # 客户端每60向服务器发送一次请求,服务器响应,从而保持连接
      
      • 自动填入密码脚本
       set password xxx
       spawn ssh [email protected] -C -N -g -R
           localhost:18080:localhost:8080
           -o ExitOnForwardFailure=yes
           -o ServerAliveInterval=60
       expect "password" {send "$passwordr"}
       interact
      
  • 补充(linux限制用户命令 2018/02/24)

    执行以下命令

      useradd ddns -s /home/ddns/bin/login.sh -m          # 创建用户,指定shell
      passwd ddns                                         # 修改密码
      chown ddns:ddns -R /home/ddns                       # 修改文件夹权限
      vi /home/ddns/bin/login.sh                          # 创建login.sh文件,内容见下文
      chmod +x /home/ddns/bin/login.sh                    # 添加执行权限
    

    login.sh文件内容,远程登录后只能用ssh命令

      #!/bin/sh
      stty erase ^H
      stty kill ^U
      echo -en "SSH to Host :"
      read host
      echo -en "UserName: "
      read username
      /usr/bin/ssh $host -l $username
    
  • 补充(远程端口转发,本地配置服务 2018/04/19)
    1. vi /usr/lib/systemd/system/ddns.service
      [Unit]
      Description=ddns
      After=network.target
    
      [Service]
      Type=simple
    
      ExecStart=/usr/bin/ssh [email protected] -C -N -g -R *:20010:localhost:80 -o ExitOnForwardFailure=yes -o ServerAliveInterval=60
    
      [Install]
      WantedBy=multi-user.target
    
    1. 配置免密登录到服务器

    1. 服务开机自启
      systemctl daemon-reload
      systemctl enable ddns           # 上面的文件名
      systemctl start ddns
    

原文:大专栏  ssh配置及端口转发

原文地址:https://www.cnblogs.com/wangziqiang123/p/11631487.html

时间: 2024-10-26 11:30:22

ssh配置及端口转发的相关文章

SSH隧道技术----端口转发,socket代理

本文大部分参考引用加copy:http://blog.chinaunix.net/uid-20761674-id-74962.html 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写程序,查数据,下电影). 公司为了防止我们用XX软件封锁了它的端口或者服务器地址. 公司不让我们上XX网站,限制了网址甚至IP. 公司不让我们看关于XX的信息,甚至花血本买了XX设备,能够对内容进行过滤.一看XX内容,链接就中断了. 我爸是

SSH隧道tunneling端口转发

SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他 TCP 端口的网络数据通过SSH 链接来转发,并且自动提供了相应的加密及解密服务.这一过程也被叫做"隧道"(tunneling),这是因为 SSH 为其他TCP 链接提供了一个安全的通道来进行传输而得名. 例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输.而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许 S

使用 SSH 隧道实现端口转发、SOCKS 代理

SSH隧道 本地端口转发 本地客户端通过 local_port 连接到 MobaXterm: MobaXterm 绕过防火墙,使用 user 用户连接到 ssh_server_ip:ssh_server_port 的 SSH 服务器: SSH 服务器连接到 romote_ip:romote_port 的远程服务器. ssh -N -f -L local_port:romote_ip:romote_port [email protected]_server_ip:ssh_server_port -

流量操控之SSH隧道与端口转发

目  录 第1章            概述... 3 1.1.         实现命令... 3 1.2.         SSH隧道类型... 3 第2章            SSH隧道... 4 2.1.         动态映射(Socks代理)... 4 2.1.1.   命令... 4 2.1.2.   相关参数说明... 4 2.1.3.   意义... 4 2.1.4.   运用场景... 4 2.1.5.   优点... 6 2.1.6.   缺点... 6 2.2.   

SSH 内网端口转发实战

导读 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人. 如果两个内网之间的linux服务器需要互相登录,或需要互相访问内网某个端口,担忧没有公网IP,可以使用的方法有ngrok(https://ngrok.com/),但并不方便,我们只需两条 SSH 命令即可. 先给出本文主角,两条SSH命令: 远程端口转发(由远程服务器某个端口转发到本地内网服务器端口) ssh   -CfNg  -R(命令行的关键)   2222(远程服务器端口

ssh验证和端口转发

ssh 服务登录验证 ssh 服务登录验证方式: 用户/ 口令 基于密钥 基于用户和口令登录验证 客户端发起ssh请求,服务器会把自己的公钥发送给用户 用户会根据服务器发来的公钥对密码进行加密 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功 基于用户名口令登录验证 基于密钥的登录方式 1.首先在客户端生成一对密钥(ssh-keygen) 2.并将客户端的公钥ssh-copy-id拷贝到服务端 3. 当客户端再次发送一个连接请求,包括ip .用户名 4. 服务端得到

ssh强大的端口转发功能

ssh 最普通的用法便是通过 ssh 远程登录 linux 服务器,或是远程执行命令,但是,ssh 的用法不光局限于此,它的端口转发功能才是高级的用法.ssh的远程登录以及远程执行命令就不记录了,主要记录一下 ssh 在不同地方的端口转发. 这是ssh的参数解释相关参数的解释: -f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机. -L port:host:hostport 将本地机(客户机)的某个端

如何配置virtualBox端口转发

1,第一步登陆虚拟主机,安装openssh-server(这一步非常重要,如果不安装,你在宿主机上怎么链接都是连不上的,我当时就犯了这个错误) apt-get install openssh-server 2,接下来这是虚拟机的端口转发,这个是最简单的. 这样就可以用secureCRT链接到自己的虚拟机里面了. 参考资料:http://www.vimer.cn/2010/09/%E5%9C%A8windows%E4%B8%8B%E7%94%A8virtualbox%E8%99%9A%E6%8B%

iptables配置服务器端口转发

环境: CentOS6.5,192.168.1.10,外网双向通信,绑定域名zlzkj.org: WinServer2008,192.168.1.11,外网不能直接访问到该机器,但ftp.远程桌面.MySQL想开放到zlzkj.org上访问: 目标: ftp:192.168.1.10的21 转发到 192.168.1.11的21: 远程桌面:192.168.1.10的3389 转发到 192.168.1.11的3389: MySQL:192.168.1.10的3361 转发到 192.168.1