• 论坛首页
  • 我的丁香客
  • 找人
    查找好友
  • 更多
    丁香园
    丁香通
    丁香人才
    丁香会议
    丁香搜索
    丁香医生
    丁香无线
    丁香导航
    丁当铺
    文献求助
    医药数据库
    丁香诊所
    来问医生
登录 注册

生物信息

关注今日:15 | 主题:139794
论坛首页  >  生物信息学讨论版   >  Database & Web-Tools
  • 发帖
    每发1个新帖
    可以获得0.5个丁当奖励
  • 回帖

分享到:

  • 微信

    微信扫一扫

  • 微博
  • 丁香客
  • 复制网址

使用远程服务器的几个技巧

  • 只看楼主
  • 页码直达:
  • 直达末页
楼主 小生小声
小生小声
常驻站友

  • 1
    积分
  • 518
    得票
  • 142
    丁当
  • +5 丁当
  • 1楼
这个帖子发布于3年零33天前,其中的信息可能已发生改变或有所发展。

如果你有一台高性能的个人PC,那么绝大部分任务都能在本地解决。但是更为常见的情况是,你买了一台小型服务器或者有专门的服务器平台,然后在本地进行访问,那么这里有几个小技巧,你可以了解下。

保存常用SSH主机,避免重复输入

Linux下访问远程服务器的方法基本就是使用SSH(secure shell)。SSH其实是一种网络协议,用来计算机之间的加密登陆,保证传输过程中即便信息被截获了也无法解析出原始信息。SSH作为一种协议有多种使用方法,在Linux里面是OpenSSH,在Windows里面可以用putty或者Xshell。不过这里仅仅讨论Linux 里面的ssh。在Linux中访问远程主机的时候,大家肯定对如下指令不陌生:

ssh -p 22 xuzhougeng@10.10.87.36

其中-p指定端口号,如果远程服务器没有特殊说明,一般默认都是22,所以可以省去-p 22. 后面为用户@IP地址。第一次访问的时候会问你是否要将该主机的公钥加入信任名单中,当然是选yes了。

那么问题来了,能不能讨论不要输入"xuzhougegn@10.10.87.36"呢?方法当然是有的,你只需要创建~/.ssh/config文件,并添加主机信息

# 使用vi编辑器 

# vi ~/.ssh/config 

Host xzg   

      HostName 10.10.87.36    

       User xuzhougegn    

       Port 22

然后就能以ssh xzg访问远程主机,而需要输入全部信息,又累还容易出错。

无需密码认证,快速登陆

上面的技巧使得你访问的时候不需要输入主机全称,但是依旧需要输入密码。如果密码比较长,那么人就容易出错,而且Linux输密码的时候啥都看不见,你都不知道自己输了多少个字符,如果你的电脑只有自己用,完全连密码输入这一步都可以省呀。

避免每次都要密码认证的方法就是使用SSH公钥。当你把个人电脑的SSH公钥存放到远程服务器的时候,远程服务器就完全信任了你,两个人之间就再也没有了隔阂。

首先是用ssh-keygen创建密钥(密码为空时,后续登陆时才能不需要输入密码)

$ ssh-keygen -b 2048 

Generating public/private rsa key pair. 

Enter file in which to save the key (/home/xzg/.ssh/id_rsa):

 /home/xzg/.ssh/id_rsa already exists.

 Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /home/xzg/.ssh/id_rsa. 

Your public key has been saved in /home/xzg/.ssh/id_rsa.pub. 

The key fingerprint is: 

SHA256:/1dusQI7WRUfsf9pG3CjCstIzGHPdPyRCO+zVF/efVM xzg@DESKTOP-CNF0I9C 

The key's randomart image is: 

+---[RSA 2048]----+ 

|               ..| 

|               o.| 

|         .     .+| 

|          + . ..o| 

|       oS. = =.oE| 

|      + =.o.o.*oX| 

|       + +.+=o OO| 

|      . o +=+.o.B| 

|       . o oo..o | 

+----[SHA256]-----+

然后是将自己的ssh公钥添加到远程服务器的~/.ssh/authorized_keys.这个方法比较多

ssh-copy-id

$ ssh-copy-id xuzhougegn@10.10.87.36

 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/xzg/.ssh/id_rsa.pub" 

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys 

xuzhougegn@10.10.87.36's password: 

 Number of key(s) added: 1 

 Now try logging into the machine, with:   "ssh 'xuzhougegn@10.10.87.36'" 

and check to make sure that only the key(s) you wanted were added.

用cat id_rsa.pub显示,然后复制到远程服务器的~/.ssh/authorized_keys中

ssh xuzhougegn@10.10.87.36' mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

任务挂起,安心关闭终端

远程操作时,一旦终端关闭,所有这个终端运行的进程都会收到SIGHUP信号,然后这些程序就会立即退出。如果你的命令需要运行好几个小时或者好几天,你肯定不愿意一直开着终端,因为网络问题功亏一篑。解决方法也是有的,而且还有好几种,这里就说说nohup和screen

nohup故名思意,就是不要hup,即能够捕捉到终端发出的SIGHUP信号并无视他,就不必担心自己的命令被终端关闭了。

# 实例 

nohup bash snp_calling.sh > output.txt

如果你不知道自己的命令有多久,所以不知道要不要输入nohup, 其实用screen(或tmux)效果更好

# 开启一个screen 

screen -S hisat2 

# 使用ctrl +a ctrl +d 挂起 

screen -list # 查看运行的sreen 

There is a screen on:

        46953.hista2    (Detached) 

1 Socket in /var/run/screen/S-xuzhougegn. 

# 继续之前的screen 

screen -r hisat2

总结

本文介绍三种连接远程服务器的小技巧

利用ssh config添加常用服务器

利用ssh公钥避免重复输入密码

利用screen/nohup 长时间运行程序

转自生信草堂


  • 邀请讨论
  • 不知道邀请谁?试试他们

    换一换
2017-12-19 14:44 浏览 : 6726 回复 : 0
  • 投票 1
  • 收藏 1
  • 打赏
  • 引用
  • 分享
    • 微信扫一扫

    • 新浪微博
    • 丁香客
    • 复制网址
  • 举报
    • 广告宣传推广
    • 政治敏感、违法虚假信息
    • 恶意灌水、重复发帖
    • 违规侵权、站友争执
    • 附件异常、链接失效
    • 其他
  • • 「考研树洞」第二弹:女生考研选什么科室比较好?

关闭提示

需要2个丁当

丁香园旗下网站

  • 丁香园
  • 用药助手
  • 丁香通
  • 文献求助
  • 丁香人才
  • 丁香医生
  • 丁香导航
  • 丁香会议
  • 手机丁香园
  • 医药数据库

关于丁香园

  • 关于我们
  • 丁香园标志
  • 友情链接
  • 联系我们
  • 加盟丁香园
  • 版权声明
  • 资格证书

官方链接

  • 丁香志
  • 丁香园新浪微博
引用回复