翼度科技»论坛 云主机 LINUX 查看内容

Linux-04ssh

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
ssh登录

作用


  • 在开发时,通常会用Terminal通过ssh登录到每个服务器里,打开服务器终端,以进行开发,通常来说,一个服务器会给出如下的几个信息:
  1. host
  2. IP
  3. password
复制代码
登录服务器


  • 基本格式:ssh user@hostname

    • user:用户名
    • hostname:IP地址/域名

  • 如果是第一次登录的时候,会有提示,输入yes,输入密码,即可登录,密码输入时不显示。

    • 输入exit/ctrl+d/logout即可退出
    • 当输入yes时,会将服务器信息存入ssh文件夹中的known_hosts文件(~/.ssh/known_hosts),再次登录就无需验证Yes

修改端口号


  • 默认端口号为22,修改端口号的基本命令格式为:ssh user@hostname -p 22
配置文件


  • 通过配置文件的方式给服务器账号配置别名,用短字符串替代长字符串
  1. # 在根目录下有
  2. ~/.ssh/config
  3. # 没有的话可以创建一个名为config的文件
  4. # 在其中编写:
  5. Host 别名
  6.     HostName IP地址/域名
  7.     User     用户名
  8.     port     默认情况下,如果不写即为22
  9. # 当有多个服务器时,可以配置多个服务器账号,格式如下:
  10. Host myserver1
  11. ...
  12. Host myserver2
  13. ...
  14. # 之后再使用服务器时,可以直接使用别名myserver1、myserver2
复制代码
免密登录
  1. # 创建密钥
  2. ssh-keygen
  3. # 一直回车后,在~/.ssh中出现了两个文件
  4. id_rsa 密钥
  5. id_rsa.pub 公钥
  6. # 密钥与公钥是唯一配对的一对,生成之后,想要免密登录到哪个服务器,即将公钥传到哪个服务器即可
  7. cat id_rsa.pub
  8. ctrl + insert
  9. # 登录到想要免密登录的服务器,在其中创建~/.ssh文件夹,创建新文件authorized_keys,将内容复制进去即可
  10. mkdir ~/.ssh
  11. cd ~/.ssh
  12. vim authorized_keys
  13. shift + insert
  14. # 当有多个密钥时需用空格隔开
  15. # 也可以使用如下命令一键添加公钥
  16. ssh-copy-id 服务器名称
复制代码
执行命令


  • 当实现自动化运维时,需要执行一些基本的操作,通过使用执行命令,来让服务器执行一些基本的自动化格式命令
  1. # 基本格式
  2. ssh user@hostname command
  3. ssh user@hostname ls -a
  4. # 同样的,执行命令可以执行一个for循环,ssh会将执行命令的标准输出重定向到当前终端中
  5. # 单引号中的$i可以求值,会被解析
  6. ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
  7. # 双引号中的$i不可以求值,不会被解析
  8. ssh myserver "for ((i = 0; i < 10; i ++ )) do echo $i; done"
  9. a=1
  10. # 双引号是在本地服务器进行转义了,所以传过去命令不是echo $a,而是echo 1
  11. ssh myserver "echo $a"
  12. # 单引号传过去的是echo $a
  13. ssh myserver 'echo $a'
  14. ssh myserver echo $a ?
复制代码
scp传文件


  • 实现不同文件之间传文件
  1. # 基本命令:将source路径下的文件复制到destination中
  2. scp source destination
  3. # 同样的一次可以复制多个文件
  4. scp source1 source2 destination
复制代码
复制文件夹


  • 基本命令:scp -r

    • -r 一定要放在source与destination前面
    • 对于某一个位置的地址,一般格式为:myserver: 后面接的是相对于服务器账号的家目录,可以是绝对路径/相对路径
      scp -r ~/tmp myserver:/home/acs/

服务器与服务器之间进行文件传输


  • 一般模式为:服务器1->本地服务器->服务器2
  • 两个服务器之间也可以进行直接传输,但是需要相互之间完整授权
scp复制的两个方向
  1. # 去:从本地家目录下的tmp文件夹复制到myserver服务器的/home/acs文件夹下
  2. scp -r ~/tmp myserver:/home/acs
  3. # 来:将服务器的文件夹复制到本地的dir文件夹
  4. scp -r myserver:/var/lib/locales/supported.d ./dir
复制代码
scp指定服务器端口号
  1. # P大写,且P放在source和destination之前
  2. scp -P xx source destination
复制代码
使用scp配置一个毛坯服务器
  1. # 配置一个毛坯服务器,需要装饰的东西,也就是vim与tmux
  2. # 将.vimrc与.tmux.conf复制到服务器对应的目录下
  3. # 位置在初始的Terminal中输入ls -a即可找到
  4. ssh .vimrc .tmux.conf myserver
  5. scp ~/.vimrc ~/.tmux.conf myserver:
  6. # tmux如果不生效则重新加载
  7. tmux list-sessions
  8. tmux kill-server
  9. tmux
  10. tmux source ~/.tmux.conf
复制代码
习题
  1. # 获取ssh教程配套的远程服务器账号的信息
  2. homework 4 getinfo
  3. User: acs_12458
  4. HostName: 123.57.67.128
  5. 860a05ff
  6. # 创建好作业后,先进入文件夹/home/acs/homework/lesson_4/,然后:
  7. homework 4 create
  8. cd /home/acs/homework/lesson_4/
  9. (0) 进入homework_0文件夹,要求:
  10.     [1] 该文件夹内容为空
  11.     [2] 配置服务器账号的密钥登陆方式。服务器信息可以通过如下命令获得:
  12.         homework 4 getinfo
  13.         将服务器账号的名称(Host)配置成:myserver
  14. # 文件夹内容为空
  15. cd homework_0
  16. rm * -r
  17. # 配置名称
  18. vim ~/.ssh/config
  19. Host myserver
  20.     HostName IP地址或域名
  21.     User 用户名
  22. # 密钥登陆方式1
  23. ssh-keygen
  24. cat ~/.ssh/id_rsa.pub
  25. ctrl+a z
  26. set:nonu
  27. ctrl+insert
  28. ssh acs_12458@123.57.67.128
  29. ssh myserver
  30. vim ~/.ssh/authorized_keys
  31. :set paste
  32. shift+insert
  33. # 密钥登录方式2
  34. ssh-copy-id myserver
  35. (1) 进入homework_1文件夹,下列描述中的“本地”均表示当前文件夹。要求:
  36.     [1] 在myserver服务器上创建并清空文件夹:~/homework/lesson_4/homework_1/
  37.     [2] 将本地的main.cpp文件上传到myserver中的~/homework/lesson_4/homework_1/目录中。
  38.     [3] 在本地创建文件夹dir。
  39.     [4] 将myserver中的/etc/lsb-release文件复制到dir中。
  40. cd ../homework_1
  41. ssh user@hostname
  42. cd ~/homework/lesson_4/homework_1/
  43. rm * -r
  44. scp main.cpp myserver:~/homework/lesson_4/homework_1/
  45. mkdir dir
  46. scp -r myserver:/etc/lsb-release ./dir
  47. (2) 进入homework_2文件夹,下列描述中的“本地”均表示当前文件夹,要求:
  48.     [1] 在myserver服务器上创建并清空文件夹:~/homework/lesson_4/homework_2/
  49.     [2] 将本地的dir文件夹上传到myserver中的~/homework/lesson_4/homework_2/目录中。
  50. cd ../homework_2
  51. ssh user@hostname
  52. cd ~/homework/lesson_4/homework_2/
  53. rm * -r
  54. scp -r ./dir myserver:~/homework/lesson_4/homework_2/
  55. (3) 进入homework_3文件夹,下列描述中的“本地”均表示当前文件夹,要求:
  56.     [1] 在本地创建文件夹dir。
  57.     [2] 将myserver中的/var/lib/locales/supported.d文件夹下载到本地dir文件夹中。
  58. cd ../homework_3
  59. mkdir dir
  60. scp -r myserver:/var/lib/locales/supported.d dir
  61. (4) 进入homework_4文件夹,编写脚本remote_mkdir.sh和remote_rmdir.sh,要求:
  62.     [1] 在myserver服务器上创建并清空文件夹:~/homework/lesson_4/homework_4/
  63.     [2] 本地目录下仅包含remote_mkdir.sh和remote_rmdir.sh
  64.     [3] remote_mkdir.sh和remote_rmdir.sh具有可执行权限
  65.     [4] remote_mkdir.sh接收一个传入参数。格式为 ./remote_mkdir.sh directory_name
  66.         该操作可以在myserver服务器上的~/homework/lesson_4/homework_4/目录下,创建一个名为directory_name的文件夹
  67.     [5] remote_rmdir.sh接收一个传入传输。格式为 ./remote_rmdir.sh directory_name
  68.         该操作可以将myserver服务器上的~/homework/lesson_4/homework_4/目录下的名为directory_name的文件夹删掉。
  69.     [6] 注意:传入的文件参数可能包含空格。两个脚本均不需要判断传入参数的合法性。
  70. scp remote_mkdir.sh remote_rmdir.sh myserver:~/homework/lesson_4/homework_4/
  71. # 并非传输文件过去执行,而是在本地执行这些命令
  72. ssh myserver
  73. mkdir ~/homework/lesson_4/homework_4/
  74. cd ~/homework/lesson_4/homework_4/
  75. rm * -r
  76. ssh myserver 'mkdir -p ~/homework/lesson_4/homework_4/'
  77. cd ../homework_4
  78. vim remote_mkdir.sh
  79. #! /bin/bash
  80. ssh myserver mkdir homework/lesson_4/homework_4/"$1"
  81. vim remote_rmdir.sh
  82. #! /bin/bash
  83. ssh myserver rm -r homework/lesson_4/homework_4/"$1" -p
  84. chmod +x remote_mkdir.sh
  85. chmod +x remote_rmdir.sh
复制代码
来源:https://www.cnblogs.com/han-fei/p/17918302.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具