zoukankan      html  css  js  c++  java
  • SSH使用技巧

    SSH使用技巧

    SSH免输入密码

    原理是依赖证书去认证,从而免除密码输入。
    通过ssh-keygen生成一对公私钥,是否使用passphrase可以根据个人喜好。(其实使用证书就是为了方便而已,我是不喜欢其他密码了。) 然后scp家目录下的.ssh/id_rsa.pub(或者dsa等公钥文件)到目的机器上。
    命令过程:
    本地
    ssh-keygen
    scp ~/.ssh/id_rsa.pub B:
     
    ssh到B主机(这里第一次必须要输入密码)
    (mkdir .ssh如果家目录下不存在该目录)
    mv id_rsa.pub .ssh/authorized_keys
    或者:cat id_rsa.pub >> .ssh/authorized_keys
     
    之后本地就可以直接登录到B了,而不需要密码。不过也有例外情况,至少我就碰到个奇怪的状况,怎么也登不过去。当然策略等我都检查过了。
     

    SSH始终保持连接

    原理是依赖ControlMaster的能力,保持socket文件存在。
    首先创建配置文件,可使用  ~/.ssh/config 或者/etc/ssh/ssh_config
    这里我使用~/.ssh/config 内容如下:
     


    Host 61.74.58.123 61.74.58.122
            ControlMaster auto
            ControlPath ~
    /.ssh/master-%r@%h:%p

    简单解释下,我要针对的是上述2个IP的主机,其他不需要。然后用到ControlMaster auto,否则默认是no的状态。%r 代替用户名,%h代替主机,%p代表端口。这个是表示生成的socket文件

    然后命令:

     ssh -M -N -f 61.74.58.123

    -M 表示使用ControlMaster 模式,这里似乎可有可无,都会去用的

    -N 表示不执行远程的命令

    -f 后台执行命令

    -N与-f配合,表示告诉ssh 我不需要执行命令,给我直接在后台工作。这样就使一条连接保持着了。

    最后,直接再使用ssh 61.74.58.123连接,而且速度很快,不需要再输入密码。不过目前还有个问题,有些服务器,会在一段时间不操作后自动断开连接,这样那个socket就没用了。可能可以用后台定期执行一些命令等解决。同样用-f参数。具体尚未试验。

    如果要关闭服务器,只需要输入

     ssh -O exit 61.74.58.123

    通过SSH Forward 建立安全连接

    表示连接到server上并将server的80和本地的12345建立条tunnel,然后访问本地的12345端口即可,此操作会连接至远端主机,不是后台操作

     ssh serverip -L 12345:localhost:80
     links http://localhost:12345/

    后台操作

     ssh serverip -f -L 12345:localhost:80 sleep 10

     ssh serverip -Nf -L 12345:localhost:80

    -L 表示本地端口重定向到远端端口,12345表示绑定的本地端口,localhost表示远端主机上的ip地址,即远端主机上的loopback,80表示远端要被定向到的端口

    -f 后台

    -N 不执行命令(不加就必须执行条远端命令)

    通过SSH 跨内网
    方法是使用与-L对应的-R参数,表示将远端的端口映射到本地
    ssh serverip -R 12345:localhost:80
    表示当访问serverip的12345端口时,等于访问本机的80
    12345指远端要绑定的端口,localhost表示本地主机的ip地址,80表示要重定向到的本地主机的端口
    实际应用:
    假设A内网机器,B公网机器,有公网IP,B要访问A的ftp
    A:ssh B -R 12345:localhost:21
    B:ftp localhost 12345
    如果存在C,也要访问A的ftp,那么B要做的是修改sshd_config:
    GatewayPorts yes
    因为默认端口重定向,监听的ip是loopback的

    SSH代理
    使用ssh serverip -D 1080

    putty配置方法:

    在connection->ssh->tunnels,输入source port(这个是你本地监听的端口),然后destination下选择dynamic。然后连接到proxy 服务器,输入用户名密码登录,就不用管他了。


    之后设置本地的socks代理即可,端口为1080,注,监听在loopback,默认。浏览器的话就在代理设置里加上127.0.0.1 1080的代理。

     
     
    分类: Linux
    标签: hacklinuxssh
  • 相关阅读:
    写作的益处
    【转载】德鲁克:激发我一生的七段经历
    PS如何删除灰色的自动切片
    其他经验博文分类链接
    LODOP单个简短问答(小页面无需拖动滚动条)
    LODOP导出excel的页眉页脚
    LODOP导出和写入excel测试
    LODOP导出Excel简短问答和相关博文
    Lodop导出excel带数字格式
    LODOP批量打印判断是否加入队列1
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3141445.html
Copyright © 2011-2022 走看看