[求教] ssh 如何登录 ip 会变的电脑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kevinyoung
V2EX    Linux

[求教] ssh 如何登录 ip 会变的电脑

  •  
  •   kevinyoung 2014-10-19 13:32:42 +08:00 9957 次点击
    这是一个创建于 4079 天前的主题,其中的信息可能已经有所发展或是发生改变。
    标题可能没描述清楚,情况是这样的:

    我有个台式,装了ubuntu,后来入了mbp就把台式的显示器拽下来给mac用了,主机一直闲置。

    现在想把这个无头主机用起来,ssh上去是可行的,问题在于主机每次重启ip都变,因为对网络基本不通,所以想请教一下这种情况下如何处理?

    先行谢过了~
    第 1 条附言    2014-10-19 19:32:52 +08:00
    感谢各位的留言,了解到很多不错的服务~

    先更新一下自己的解决方案,简而言之就是在无头机上弄了一个守护进程,每分钟检查一下ip有没有变,如果变了就把新ip以邮件形式发到我邮箱里,实现的依赖:msmtp,mutt,cron。首先要把邮件配置好。具体的实现脚本:

    #!/bin/bash
    IPADDRESS=$(ifconfig eth0 | sed -n 's/.*inet addr:\([^ ]*\).*/\1/p')

    echo "Last check at: $(date)" >> updateip.log

    if [[ "${IPADDRESS}" != $(cat ~/.current_ip) ]];then
    if echo "${IPADDRESS}" | mutt -s "new ip" myemail@com ;then
    echo "Ip change from $(cat ~/.current_ip) to ${IPADDRESS}" >> updateip.log
    echo ${IPADDRESS} > ~/.current_ip
    else
    echo "Failed to send the mail, try again later." >> ~/updateip.log
    fi
    fi

    保存在~/bin/unpdateip.sh

    然后在/etc/crontab文件最后加上一行:

    * * * * * <user> bash ~/bin/updateip.sh

    鲁棒性还不行,不过已经工作了,后面根据实际情况再看看。
    第 2 条附言    2014-10-19 19:45:35 +08:00
    整理了一下楼里提供的方案,再次感谢各位的回复

    1. 服务类
    https://ngrok.com/
    https://www.pushbullet.com/
    https://boxcar.io/
    花生壳/ddns

    2. 自己动手
    在路由器上做映射
    手动配置静态ip
    ssh反向代理到vps上
    35 条回复    2015-06-20 19:19:08 +08:00
    fish748
        1
    fish748  
       2014-10-19 13:40:56 +08:00 via iPhone   1
    笨方法:写一个定时获取ip的脚本,每次ip更改时通过 IFTTT 推送到手机上。
    msg7086
        2
    msg7086  
       2014-10-19 13:44:42 +08:00   1
    ip会变?花生壳/ddns
    codeninja
        3
    codeninja  
       2014-10-19 13:45:08 +08:00 via iPad   1
    设置成固定IP啊
    loddit
        4
    loddit  
       2014-10-19 13:53:17 +08:00   1
    关了 dhcp 设置一个固定的比较省事,
    虽然不是最完美的办法
    c742435
        5
    c742435  
       2014-10-19 13:53:56 +08:00   1
    你的主机是连接到家里的路由上的吗?是的话去路由里设置固定ip。
    kevinyoung
        6
    kevinyoung  
    OP
       2014-10-19 13:55:17 +08:00
    @fish748 这个好,哈哈
    kevinyoung
        7
    kevinyoung  
    OP
       2014-10-19 13:59:21 +08:00
    @codeninja 主机在实验室,应该是通过交换机直接插到楼里的路由器上,直接给自己机器绑定一个固定ip会出事儿吗?比如ip冲突什么的
    kevinyoung
        8
    kevinyoung  
    OP
       2014-10-19 13:59:49 +08:00
    主机在实验室,应该是通过交换机直接插到楼里的路由器上,直接给自己机器绑定一个固定ip会出事儿吗?比如ip冲突什么的


    @loddit
    @c742435
    47jm9ozp
        9
    47jm9ozp  
       2014-10-19 14:01:02 +08:00   1
    @kevinyoung 直接分配一个靠后的IP一般没事儿,不过还是一楼的方法比较靠谱
    ytf4425
        10
    ytf4425  
       2014-10-19 14:05:31 +08:00   1
    花生壳之类的
    路由器也能用
    liyaoxinchifan
        11
    liyaoxinchifan  
       2014-10-19 14:06:40 +08:00   1
    搞个动态域名解析,直接ssh域名
    msg7086
        12
    msg7086  
       2014-10-19 14:20:43 +08:00   1
    @kevinyoung IP段如果比较大的话就找个不容易冲突的咯
    agassi_yzh
        13
    agassi_yzh  
       2014-10-19 14:52:51 +08:00
    不时可以通过主机名吗?
    bnpysse
        14
    bnpysse  
       2014-10-19 15:04:38 +08:00   1
    改Ubuntu的SSH的端口号,然后在路由上做NAT映射,然后远程的话,用ssh 域名 -p xxxx,xxxx端口号必须是路由上面的那个开放的端口号

    或者不用改Ubuntu上面的端口号,但是必须在路由上面把外部的端口号映射到你内网机器上面的那个SSh端口号上面就可以了。
    LazyZhu
        15
    LazyZhu  
       2014-10-19 15:36:13 +08:00   1
    wzxjohn
        16
    wzxjohn  
       2014-10-19 15:51:37 +08:00   1
    @LazyZhu 没太看懂这玩意是干啥的。。。看了一圈这玩意的功能我好想都能自己实现啊。。。
    loveyu
        17
    loveyu  
       2014-10-19 15:54:25 +08:00   1
    动态解析吧,或者手动配IP。后者不行就前者,前者可以DNSPOD
    churchmice
        18
    churchmice  
       2014-10-19 15:55:22 +08:00 via Android   1
    这问题跟ssh一毛钱关系都没有
    jox
        19
    jox  
       2014-10-19 16:11:04 +08:00   1
    额,lz需要补补网络方面的基础知识了。我看你这意思是想在其他地方连位于实验室的电脑吧?首先要搞清楚的是这里的“ip会变”变的不是你电脑的ip地址,而是你实验室的网络也就是所谓的LANLocal Area Network的网关gateway的ip地址,也就是你所说的这个“交换机”在其所在的网络里的ip地址。

    设你实验室网络的名字为networkA,要想连处在networkA里的某个电脑serverA,你就得知道networkA的ip地址,你如果在学校的话就问问你们的网络管理员,看看他有没有办法给你们实验室分配一个静态的ip,有些学校有这种服务,不过得花钱,还可以给你分配个域名,否则你就写个脚本程序,让serverA每次自己的ip地址变化的时候就将其发送到另一台电脑serverB上,然后在你常用的电脑serverC上也写个程序定期连接serverB获取serverA的最新ip地址,比如你可以写个登录脚本,如果连接原来ip地址的连接超时或失败就连接serverB然后更新ip然后再连serverA,这里的serverB的ip地址必须得是静态的,这样serverA和serverC都能连接上,比如你可以写个应用放在免费的app engine上,专门用来记录serverA的ip地址并且响应serverC发送的请求。

    额,会不会太麻烦了,也许有更简单的方法
    jox
        20
    jox  
       2014-10-19 16:21:32 +08:00   1
    哎,研究了一下,国内似乎没有免费的app engine啊。。。。阿里云和sae都是只能免费用一段时间,然后就要收费了,不知道百度的那个bae是什么情况,去官网看了一下似乎没提收费的事情,还是gae好啊,可惜国内不翻墙好像用不了gae
    crab
        21
    crab  
       2014-10-19 17:33:10 +08:00   1
    反弹木马
    hntee
        22
    hntee  
       2014-10-19 17:33:43 +08:00   1
    同15L,请用ngrok.
    ZMOM1031
        23
    ZMOM1031  
       2014-10-19 18:09:19 +08:00   1
    @LazyZhu Ngrok会开太久会挂的,我在树莓派上用的就是Ngrok还没一个月就挂了另外还不能放后台运行,当然也有其他解决方法
    xream
        24
    xream  
       2014-10-19 18:21:43 +08:00   1
    @fish748 IFTTT 没有直接 http 请求的 api 吧? 那还不如直接用 pushbullet 和 boxcar
    14
        25
    14  
       2014-10-19 18:26:26 +08:00 via Android   1
    两台机器在同一个局域网吗(大中华局域网除外)
    evlos
        26
    evlos  
       2014-10-19 18:26:34 +08:00 via Android   1
    我现在是用 SSH 反向代理本地的 SSH 端口到 VPS 上,然后直接 SSH root@vpsip -p端口
    wuling
        27
    wuling  
       2014-10-19 18:59:29 +08:00   2
    @jox openshift挺好用的,也不用翻墙
    catsky
        28
    catsky  
       2014-10-19 19:01:07 +08:00   1
    ngrok +1 非常好用
    kevinyoung
        29
    kevinyoung  
    OP
       2014-10-19 19:39:07 +08:00
    @jox 感谢回复,学习了~
    kevinyoung
        30
    kevinyoung  
    OP
       2014-10-19 19:39:25 +08:00
    @crab 不明觉厉
    kevinyoung
        31
    kevinyoung  
    OP
       2014-10-19 19:40:10 +08:00   1
    @14 在的
    jox
        32
    jox  
       2014-10-19 20:21:01 +08:00
    @wuling 我去看了一下,很奈斯啊!非常感谢!
    fish748
        33
    fish748  
       2014-10-19 22:32:10 +08:00 via iPhone
    @xream 我是发邮件给 IFTTT,然后手机上的 app 就会推送。
    codeninja
        34
    codeninja  
       2014-10-19 23:27:42 +08:00 via iPad
    @evlos +1
    CYF0033
        35
    CYF0033  
       2015-06-20 19:19:08 +08:00 via Android
    现在用的怎么样?我跟楼主一样情况,我用的是电信宽带,动态IP,每次重启后IP就会变,外出的时候,赶时间没得看IP,又想ssh控制电脑………
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2556 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 14:35 PVG 22:35 LAX 06:35 JFK 09:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86