• (转载)ssh


    ssh登录


    基本用法

    远程登录服务器:

    ssh user@hostname
    
    • user: 用户名
    • hostname: IP地址或域名

    第一次登录时会提示:

    The authenticity of host '123.57.47.211 (123.57.47.211)' can't be established.
    ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    

    输入yes,然后回车即可。
    这样会将该服务器的信息记录在~/.ssh/known_hosts文件中。

    然后输入密码即可登录到远程服务器中。

    默认登录端口号为22。如果想登录某一特定端口:

    ssh user@hostname -p 22
    

    配置文件

    创建文件 ~/.ssh/config

    然后在文件中输入:

    Host myserver1
        HostName IP地址或域名
        User 用户名
    
    Host myserver2
        HostName IP地址或域名
        User 用户名
        Port 映射的登录端口号
    

    之后再使用服务器时,可以直接使用别名myserver1myserver2

    密钥登录

    创建密钥:

    ssh-keygen
    

    然后一直回车即可。

    执行结束后,~/.ssh/目录下会多两个文件:

    • id_rsa:私钥
    • id_rsa.pub:公钥
      之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。

    例如,想免密登录myserver服务器。则将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可。

    也可以使用如下命令一键添加公钥:

    ssh-copy-id myserver
    

    登出

    logout 或者 Ctrl + d

    执行命令

    命令格式:

    ssh user@hostname command
    

    例如:

    ssh user@hostname ls -a
    

    ssh远程执行命令中单引号与双引号的问题

    例如:

    a=1
    ssh myserver  "echo $a"  # 输出:1
    ssh myserver  'echo $a'  # 输出:空
    

    双引号将命令在本地转义,故传过去的命令是echo 1;单引号在本地不会将命令转义,故传过去的是echo $a

    例如:
    需要编写一个本地运行的shell脚本,可以在服务器上创建由脚本参数指定文件名的文件

    #! /bin/bash
    ssh myserver "mkdir -p homework/lesson_4/homework_4/\"${1}\"" 
    ssh myserver "mkdir -p homework/lesson_4/homework_4/'${1}'" 
    

    分析一下:

    • 需要在本地进行转义,所以需要使用双引号括起来或者不加
    • 考虑到文件名可能含有空格,所以需要使用引号将S{1}单独括起来
      • 如果使用双引号,必须添加\进行转义,否则会将双引号识别为文件名的一部分
      • 如果使用单引号,外层引号优先级更高,双引号在外可以解析内层单引号内部的变量值

    git bash配置SSH登录阿里云

    1. 按照上面的步骤在git bash中配置云服务器别名和免密登录,云服务器用户名(user)是root, 地址(hostname)是分配的公网IP

    2. 登录之后是root用户,不建议使用该用户(权限过大),可以创建一个新的工作用户:

    adduser XXX  # 创建用户XXX
    usermod -aG sudo XXX  # 给用户XXX分配sudo权限
    
    1. 登录之后,阿里云ECS隔一段时间未操作会自动掉线,可通过以下操作关闭:
    cd /etc/ssh
    
    vim sshd_config  # 该文件需要root用户才有权限修改
    
    找到
    #ClientAliveInterval 0
    #ClientAliveCountMax 3
    
    修改为
    ClientAliveInterval 30
    ClientAliveCountMax 86400
    
    1. 配置新服务器的工作环境 (可选,主要是个性化bash\tmux\vim的配置)
      AC Terminal的配置传到新服务器上:
    scp .bashrc .vimrc .tmux.conf server_name:  # server_name需要换成自己配置的别名
    
    1. 安装tmux和docker
      登录自己的服务器,然后安装tmux
    sudo apt-get update
    sudo apt-get install tmux
    

    打开tmux。(养成好习惯,所有工作都在tmux里进行,防止意外关闭终端后,工作进度丢失)

    然后在tmux中根据docker安装教程安装docker即可。



    scp传文件


    基本用法

    命令格式:

    scp source destination
    

    source路径下的文件复制到destination
    注意服务器的地址应该写为:user@ip:XXXuser@ip:表示服务器的/home/user/地址

    一次复制多个文件

    scp source1 source2 destination
    

    复制文件夹:

    scp -r ~/tmp user@ip:/home/acs/
    
    • 将本地家目录中的tmp文件夹复制到user@ip服务器中的/home/acs/目录下。
    scp -r ~/tmp user@ip:homework/
    
    • 将本地家目录中的tmp文件夹复制到user@ip服务器中的~/homework/目录下(默认处于服务器的/home/用户名/路径下
    scp -r user@ip:homework . 
    
    • user@ip服务器中的~/homework/文件夹复制到本地的当前路径下。

    指定服务器的端口号

    scp -P 22 source1 source2 destination
    

    注意: scp-r -P等参数尽量加在sourcedestination之前。

    使用scp配置其他服务器的vimtmux

    scp ~/.vimrc ~/.tmux.conf user@ip:
    

    作者:yxc
    链接:https://www.acwing.com/file_system/file/content/whole/index/content/2898266/
    来源:AcWing

  • 相关阅读:
    SVN中Revert changes from this revision 跟Revert to this revision
    bootstrap中如何使input中的小图标获得点击事件
    基于Bootstrap使用jQuery实现输入框组input-group的添加与删除-改进版
    MVC4 Controller 与 WebApi 的 Session 传值问
    MVC Razor与javascript混编(js中嵌入razor)
    Asp.net mvc怎么在razor里写js代码
    MVC后台数据赋值给前端JS对象
    ASP.NET MVC自定义验证Authorize Attribute(包含cookie helper)
    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
    【记录】【solr】solr7.2.1原子更新
  • 原文地址:https://www.cnblogs.com/zy200128/p/15811360.html
Copyright © 2020-2023  润新知