ssh验证和端口转发

ssh 服务登录验证

    ssh 服务登录验证方式:
        用户/ 口令
        基于密钥
    基于用户和口令登录验证
        客户端发起ssh请求,服务器会把自己的公钥发送给用户
        用户会根据服务器发来的公钥对密码进行加密
        加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
    基于用户名口令登录验证

    基于密钥的登录方式
        1。首先在客户端生成一对密钥(ssh-keygen)
        2。并将客户端的公钥ssh-copy-id拷贝到服务端
        3。 当客户端再次发送一个连接请求,包括ip 、用户名
        4。 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:acdf
        5。 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
        6。 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
        7。 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

基于key 认证

    ssh-keygen
        ssh-keygen - authentication(证明)key generation, management and conversion(转化)
            ssh-keygen [options]
                -t type     指定密钥创建的类型
                -P  phrase 提供老的密码
                -f  指定密钥文件
                -p  更改私钥文件的密码
                -i  导入到openssh密钥文件
    ssh-copy-id
        ssh-copy-id - install your public key in a remote machine’s authorized_keys
        ssh-copy-id [-i [identity_file]] [[email protected]]machine
    ssh-add
        ssh-add - adds private key identities to the authentication agent
            ssh-add [-n [-T token]] [-e pkcs11] [-s pkcs11] [-cDdLlXx] [-t life] [file ...]
    基于密钥的认证:
        1。在客户端生成密钥对
            ssh-keygen -t rsa [-P ‘‘] [-f “~/.ssh/id_rsa"]
        2。把公钥文件传输至远程服务器对应用户的家目录
            ssh-copy-id [-i [identity_file]] [[email protected]] host
        3。测试,完成
    可以给私钥加口令 :
            ssh-keygen –p
    私钥加口令后使用代理。
        启动代理
            ssh-agent bash
        当你输入一次私钥的口令后,代理(authentication agent )保存口令,帮你下次自动登录,但当你注销后,代理程序关闭了。
        要想再使用代理,就需要再此启动并ssh-add,才能有用。
        在GNOME中,代理被自动提供给root用户,否则运行ssh-agent bash
    私钥口令通过命令添加给代理
        ssh-add
    在SecureCRT或Xshell实现基于key验证
        在SecureCRT 工具—> 创建公钥—> 生成Identity.pub 文件转化为openssh 兼容格式(适合SecureCRT ,Xshell 不需要转化格式),并复制到需登录主机上相应文件authorized_keys 中,注意权限 必须为600 ,在需登录的ssh 主机上执行:
        ssh-keygen -i -f Identity.pub  >> .ssh/authorized_keys(secureCRT)

SSH 端口转发

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

    SSH 端口转发能够提供两大功能:
        加密SSH Client 端至 SSH Server端之间的通讯数据
        突破防火墙的限制完成一些之前无法建立的TCP连接
    本地转发:
        -L localport:remotehost:remotehostport sshserver
        选项:
            -f  后台启用
            -N  不打开远程shell ,处于等待状态
            -g  启用网关功能
        示例
            A机器上为本地:
                当你访问本机9527端口时,它会将请求转发到B的sshd服务器上,ssh服务器收到解密后,将其再转发到c的telnet服务器的23端口。
            前提:C机器上telnet服务打开,A和B机器上sshd服务打开,本机防火墙关闭
            ssh –L 9527:telnetsrvIP:23  -Nf sshsrvIP   (开通桥)
            telnet 127.0.0.1 9527
            data <- -> localhost:9527 <- -> localhost:XXXXX <- ->sshsrv:22 <- -> sshsrv:YYYYY <- -> telnetsrv:23
    远程转发:
        -R sshserverport:remotehost:remotehostport sshserver
        示例:

            B机器为本机:
                让A机器sshsrv侦听9527端口的访问,如有访问,A机器就加密后通过ssh服务转发请求到B本机ssh客户端,再由本机解密后转发到smtpsrv:25
            ssh –R 9527:smtpsrvIP:25 –Nf sshsrvIP
            Data <- ->  remotesshsrv:9527 <- ->  remotesshsrv:22 <- -> localhost:XXXXX <- -> localhost:YYYYY(随机端口) <- -> smtpsrv:25

    动态端口转发:
        当用firefox访问internet 时,本机的1080端口做为代理服务器,firefox 的访问请求被转发到sshserver 上,由sshserver替之访问internet
            在本机firefox 设置代理socket proxy:127.0.0.1:1080
            ssh -D 1080 [email protected]
        curl  --proxy   

X协议转发

    所有图形化应用程序都是X客户程序
        能够通过tcp/ip 连接远程X服务器
        数据没有加密机,但是它通过ssh连接隧道安全进行
    ssh -X [email protected] gedit
        remotehost主机上的gedit 工具,将会显示在本机的X服务器上
        传输的数据将通过ssh连接加密

原文地址:https://www.cnblogs.com/shenxm/p/8448916.html

时间: 2024-11-08 09:09:30

ssh验证和端口转发的相关文章

SSH隧道tunneling端口转发

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

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

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

ssh配置及端口转发

生成密钥 默认密钥 ssh-keygen -t rsa -C [email protected] 生成自定义文件名密钥 ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C [email protected] 多密钥配置 添加文件~/.ssh/config,内容如下 Host test-github #网站本地别称,建议设置成网站域名,该行不要直接复制,具体见下文 Hostname github.com #网站实际地址 IdentityFile ~/.ssh/

使用 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 内网端口转发实战

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

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

实战 SSH 端口转发

原文转自:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html 通过本文的介绍,读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中的一些问题.学会在非安全环境下使用端口转发来加密网络应用,保护个人隐私以及重要商业信息.同时也能够用此技术解决工作中一些常见问题,例如解决防火墙及网络应用本身带来的一些限制. 第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你

SSH 端口转发

SSH 端口转发功能能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务.其实这一技术就是我们常常听说的隧道(tunnel)技术,原因是 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输.我们知道,FTP 协议是以明文来传递数据的.但是我们可以让 FTP 客户端和服务器通过 SSH 隧道传输数据,从而实现安全的 FTP 数据传输.更常见的情况是我们的应用经常被各种防火墙限制.常见的有禁止访问某些网站.禁用某类软件,同时你的所有网络行为都被监控并