V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kevinyoung
V2EX  ›  Linux

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

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

    我有个台式,装了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" [email protected] ;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
    ooxxcc
        9
    ooxxcc  
       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地址,而是你实验室的网络也就是所谓的LAN——Local 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 [email protected] -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   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2312 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 16:04 · PVG 00:04 · LAX 09:04 · JFK 12:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.