4 SSH
在AC终端获取SSH服务器
homework 4 getinfo
通过SSH登录远程服务器
4.1 SSH登录
假设user
是用户名,hostname
是IP地址或域名,则按如下方式登录
ssh user@hostname
首次登录会提示之前未登录过这台服务器,输入yes
或直接回车会把该服务器的信息记录到~/.ssh/known_hosts
中,然后再输入密码就能登录到该服务器。若要退出,可用命令exit
SSH默认端口为22
,可显示声明服务器端口号
ssh user@hostname -p 22
配置登录
可为ssh user@hostname
起别名,方便登录。在~/.ssh/config
中添加服务器信息
Host myserver
HostName IP地址或域名
User 用户名
之后就能使用ssh myserver
登录到远程服务器。
密钥登录
首先创建密钥,输入以下命令,一直回车即可。
ssh-keygen
然后~/.ssh
下会生成两个文件
- 私钥:
id_rsa
- 公钥:
id_rsa.pub
可把公钥内容复制到远程服务器的~/.ssh/authorized_keys
中,或直接使用命令ssh-copy-id myserver
4.2 SSH命令
SSH命令方便写脚本,基本格式如下
ssh user@hostname command
command
就是shell
命令,取决于服务器是什么系统
在SSH中,单引号''
括起的表达式或命令可以直接在远程服务器执行,而双引号""
括起的表达式不能执行,只能视为字符串,这与在本地服务器不一样。
4.3 SSH传文件
为了实现两个服务器传输文件,可用命令scp
把源文件source
复制到destination
。
scp source destination
也可指定多个文件复制到destination
scp source1 source2 ... destination
如果需要复制文件夹,需要用参数-r
scp -r source destination
本地服务器可省略域名,而远程服务器需要用域名标记myserver:
,例如
scp -r ~/tmp myserver:homework/
也可指定端口号
scp -p 22 source destination
注意,参数-p
和-r
需要在source
之前。
为了在远程服务器部署相同的环境,可以用SSH复制配置文件,例如配置vim
和tmux
。
scp ~/.vimrc ~/.tmux.conf myserver:
这里省略了destination
的目录,表示家目录home
4.4 作业核心代码
task1
ssh xxxxxxx@xxx.xxx.xxx.xxx
yes
xxxxxxxx # 密码
exit
vim ~/.ssh/config
在~/.ssh/config
加入以下内容
Host myserver
HostName xxx.xxx.xxx.xxx
User xxxxxxx
配置秘钥登录
ssh-keygen
ssh-copy-id myserver
task2
ssh myserver
mkdir -p ~/homework/lesson_4/homework_1/
exit
scp main.cpp myserver:~/homework/lesson_4/homework_1/
mkdir dir
scp myserver:/etc/lsb-release ./dir
mkdir
的参数-p
用于递归创建目录,解决中间目录不存在而无法创建的问题
task3
ssh myserver
mkdir -p ~/homework/lesson_4/homework_2/
exit
scp -r ./dir myserver:~/homework/lesson_4/homework_2/
task4
mkdir dir
scp -r myserver:/var/lib/locales/supported.d ./dir
task5
ssh myserver
mkdir -p ~/homework/lesson_4/homework_4/
exit
创建文件remote_mkdir.sh
#! /bin/bash
ssh myserver mkdir homework/lesson_4/homework_4/\"$1\"
创建文件remote_rmdir.sh
#! /bin/bash
ssh myserver rm homework/lesson_4/homework_4/\"$1\" -r