ssh

远程登录原理

  1. 安全,即使被截获也没毛病

远程登录服务器语法

  1. ssh user@hostname
  2. user:用户名
  3. hostname:IP地址或域名

初次登录会提示

  1. 初次登录会提示
  2. 登录后服务器的信息会记录在~/.ssh/known_hosts文件夹中
  3. 然后输入密码即可登录到服务器中
  4. 默认登录端口为22,如果想要登录某一特定端口,加上 -p 参数
  5. 假设想要登录23号端口:ssh username@hostname -p 23

配置文件

  1. 在客户端中(主机,本子)中创建文件 ~/.ssh/config config文件就是用来创建别名机制的
  2. 在文件中输入
    Host myserver1
        HostName IP地址或域名
        User 用户名
    
    Host myserver2
        HostName IP地址或域名
        User 用户名
  3. 之后再使用服务器时,可以直接使用别名myserver1 和 myserver2

免密登录

  1. 在本地(本子上),ssh-keygen,会在.ssh/文件夹下生成密钥:id_rsa和公钥id_rsa.pub
  2. 之后想要免密登录哪个服务器,就将本地的公钥传给哪个服务器即可
  3. 在服务器中的.ssh/路径下创建一个 authorized_keys 文件,然后将本地生成的密钥复制到这个文件中,如果原本就有这个文件,那么只需要在后面加上密钥即可
  4. 例如,想要免密登录myserver服务器,就将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可
  5. 也可以使用ssh-copy-id myserver一键添加公钥
  6. 公钥添加到.ssh/authorized_keys中即可免密登录
  7. 误区:在服务器上的生成了密钥,传到了服务器本身的authorized_keys或者主机上的,不能自己登自己
  8. 可以将自己的密钥传递给多个服务器,当服务器很多时,可以实现只需服务器名字登陆

执行命令

为什么

  1. 当我们需要自动化运维时,需要实现一步:登进去,执行一个命令之后,退出来
  2. 当有大量服务器时,如果登进去,实现一个命令之后,再退出来就会消耗大量的人力时间

怎么做

命令格式

  1. ssh登录之后直接加上命令
    ssh user@hostname command
  2. 这个命令的执行是在服务器中实现的,结果重定向到本地
  3. 注意:单引号中的$i可以求值
    ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
  4. 双引号中的$i不可以求值
    ssh myserver "for ((i = 0; i < 10; i ++ )) do echo $i; done"

scp传文件

命令格式(可以记成ssh的cp,scp)

  1. scp source destination
  2. 将source路径下的文件复制到destination中,先从后到,和cp命令一样

    一次复制多个文件

  3. scp source1 source2 destination

复制文件夹

  1. scp -r ~/tmp myserver:/home/acs -r放在source和destination的前面
  2. 服务器和本地的地址都可以作为source或者destination,即既可以将文件从本地传到服务器上,也可以从服务器上传到本地
  3. 本地文件使用相对路径或绝对路径都可以
  4. 服务器上的路径:服务器的地址或别名:地址(这个地址可以写绝对路径,也可以写相对于根目录的相对地址,不写的话默认为根目录

指定服务器的端口号

scp -P source1 source2 destination
  1. 注意,这个地方的-P是大写的,ssh的-p是小写的
  2. scp的-r和-P参数尽量加在source和destination之前

服务器之间传

  1. scp命令不止限于主机和服务器之间传文件,也可以在两台服务器之间传文件,即source和destination都可以为服务器的路径
  2. 但是必须两台服务器之间的授权非常完整,否则会报错
  3. 所以可以将一台服务器上的文件传到本地,再由本地传到另一台服务器上

使用scp配置其它服务器的vim和tmux

  1. vim的配置文件: .vimrc
  2. tmux的配置文件: .tmux.conf
  3. 配置vim和tmux只需要将vim和tmux的配置文件传到服务器的根目录下即可
    scp .vimrc .tmux.conf myserver: