Appearance
Linux 学习笔记
Linux 安装
VMware Workstation下载
注册登录后点击这里的所有产品

打开后直接ctrl+f搜索workstation就找到了,选 player~(需要多处理器等高级功能就下Pro,但是需要许可证)

VMware 配置
下载完成后安装,无脑下一步即可
安装的时候,来到这个网站找系统镜像
找到想要的系统迅雷下载~
安装完成后打开,选择创建新虚拟机

点击浏览找到下好的镜像系统

输入用户名密码

起个名字,在电脑里找个地方大的位置

无脑下一步开始啦

点击自定义硬件

差不多这么设置下就行了,以后也可以再改

等待安装完成进入系统后,登录账户(微软账户即可),然后一直next就完成了
相关软件包安装
安装 Vim
Linux 必不可少的,先装个 Vim
sudo apt install vim
输入密码,敲个Yes或者Y等他自己安装就行~轻轻松松
安装 Git
在配置服务器或者共享文件夹之前,git用来互相传文件还是挺好用的
sudo apt install git
还是输入密码,确认后自动安装完成~
安装 Flex
向作业低头,被迫下载
sudo apt-get install flex
安装 bison
为了作业再低一次头
sudo apt-get install bison
安装 python-qt4
低了两次也不少这一次了
sudo apt-get install python-qt4
不出意外会因为少什么东西报错。。。。
先输入sudo add-apt-repository ppa:rock-core/qt4
然后跳转到download目录下cd ~/Downloads
依次输入
wget http://archive.ubuntu.com/ubuntu/pool/universe/q/qt-assistant-compat/libqtassistantclient4_4.6.3-7build1_amd64.deb
sudo apt-get install ./libqtassistantclient4_4.6.3-7build1_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/p/python-qt4/python-qt4_4.12.1+dfsg-2_amd64.deb
sudo apt-get install ./python-qt4_4.12.1+dfsg-2_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/p/python-pyaudio/python-pyaudio_0.2.11-1build2_amd64.deb
sudo apt-get install ./python-pyaudio_0.2.11-1build2_amd64.deb
然后再进行sudo apt-get install python-qt4就好啦~

成功打开~~
如果出现如下错误:
Failed to load module "canberra-gtk-module"
输入:sudo apt-get install libcanberra-gtk-module即可
文件交互







指令操作
ctrl c:取消命令,并且换行
ctrl u:清空本行命令
tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
ls:列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件
pwd:显示当前路径
cd XXX:进入XXX目录下,
cd ../:返回上层目录
cp XXX YYY:将xx文件复制成YYY,XXX和YYY可以是一个路径,比如../dir_c/a.txt,表示上层目录下的dir_c 文件夹下的文件a.txt
mkdir XXX:创建目录XXX
rm XXX:删除普通文件:
rm XXX -r:删除文件夹
mv XXX YYY:将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径﹔重命名也是用这个命令
touch XXX:创建一个文件
cat XXX:展示文件XXX中的内容
相关练习
- 进入homework_0文件夹,分别创建文件夹
dir_a, dir_b,dir_c
shell
cd homework_0
mkdir dir_a dir_b dir_c- 进入homework_1文件夹,将a.txt,b.txt,c.txt分别复制成:
a.txt.bak, b.txt.bak,c.txt.bak
shell
cd homework_1
for var in *.txt;
do
cp "$var" "${$var%.txt}.txt.bak"
done- 进入homework 2文件夹,将
a.txt,b.txt,c.txt分别重命名为:a_new.txt,b_new.txt,c_new.txt
shell
cd homework_2
for var in *.txt;
do
cp "$var" "${$var%.txt}.new.txt"
done- 进入
homework _3文件夹,将dir_a文件夹下的a.txt,b.txt,c.txt分别移动到文件夹dir_b下
shell
cd homework_3
mv dir_a/* dir_b- 进入
homework_4文件夹,将普通文件a.txt, b.txt,c.txt删除
shell
cd homework_4
rm *- 进入
homework_5文件夹,将文件夹dir_a, dir b, dir_c删除
shell
cd homework_5
rm * -r- 进入
homework_6文件夹,查看task.txt的内容,并按其指示进行操作
shell
cd homework_6
cat task.txt
// 将task.txt重命名为done.txt,创建目录dir_a,将done.txt移动到目录dir_a下
mkdir dir_a
mv task.txt dir_a/done.txt- 进入
homework_7文件夹,创建文件夹dir_0, dir_1, dir_2,将a.txt,b.txt,c.txt复制到dir_0下,重命名为a0.txt,b0.txt,c0.txt;将a.txt,b.txt,c.txt复制到dir_1下,重命名为a1.txt, b1.txt,c1.txt;将a.txt,b.txt,c.txt复制到dir_2下,重命名为a2.txt,b2.txt,c2.txt;
shell
cd homework_7
for i in {0..2}
do
mkdir "dir_$i"
for var in *.txt
do
cp "$var" "dir_$i/${var%.txt}$i.txt"
done
done- 进入
homework_8文件夹,分别在dir_a, dir_b, dir_c文件夹下查看task.txt的内容,并分别按照指示进行操作
shell
cd homework_8cd dir_acat task.txt// 将a.txt删除rm a.txtcd ../dir_bcat task.txt// 将b.txt重命名为b_new.txtmv b.txt b_new,txtcd ../dir_ccat task.txt// 将c.txt复制成c.txt.bakcp c.txt c.txt.bak- 进入
homework_9文件夹,将其中所有txt类型的文件删除
shell
cd homework_9rtmux 教程
功能
- 分屏。
- 允许断开Terminal连接后,继续运行进程。
结构
一个`tmux`可以包含多个`session`,一个`session`可以包含多个`window`,一个`window`可以包含多个pane。
实例
shell
tmux:
session 0:
window 0:
pane 0
pane 1
pane 2
...
window 1
window 2
...
session 1
session 2
...操作
- tmux:新建一个session,其中包含一个window,window中包含一个pane,pane里打开了一个shell对话框。
- 按下Ctrl + a后手指松开,然后按%:将当前pane左右平分成两个pane。
- 按下Ctrl + a后手指松开,然后按":将当前pane上下平分成两个pane。
- Ctrl + d:关闭当前pane;如果当前window的所有pane均已关闭,则自动关闭window;如果当前session的所有window均已关闭,则自动关闭session。
- 鼠标点击可以选pane。
- 按下ctrl + a后手指松开,然后按方向键:选择相邻的pane。
- 鼠标拖动pane之间的分割线,可以调整分割线的位置。
- 按住ctrl + a的同时按方向键,可以调整pane之间分割线的位置。
- 按下ctrl + a后手指松开,然后按z:将当前pane全屏/取消全屏。
- 按下ctrl + a后手指松开,然后按d:挂起当前session。
- tmux a:打开之前挂起的session。
- 按下ctrl + a后手指松开,然后按s:选择其它session。
方向键 —— 上:选择上一项 session/window/pane
方向键 —— 下:选择下一项 session/window/pane
方向键 —— 右:展开当前项 session/window
方向键 —— 左:闭合当前项 session/window
- 按下Ctrl + a后手指松开,然后按c:在当前session中创建一个新的window。
- 按下Ctrl + a后手指松开,然后按w:选择其他window,操作方法与12. 完全相同。
- 按下Ctrl + a后手指松开,然后按PageUp:翻阅当前pane内的内容。
- 鼠标滚轮:翻阅当前pane内的内容。
vim 教程
功能
- 命令行模式下的文本编辑器。
- 根据文件扩展名自动判别编程语言。支持代码缩进、代码高亮等功能。
模式
- 一般命令模式
默认模式。命令输入方式:类似于打游戏放技能,按不同字符,即可进行不同操作。可以复制、粘贴、删除文本等。
- 编辑模式
在一般命令模式里按下i,会进入编辑模式。
按下ESC会退出编辑模式,返回到一般命令模式。
- 命令行模式
在一般命令模式里按下:/?三个字母中的任意一个,会进入命令行模式。命令行在最下面。
可以查找、替换、保存、退出、配置编辑器等。
操作
i:进入编辑模式ESC:进入一般命令模式h或 左箭头键:光标向左移动一个字符j或 向下箭头:光标向下移动一个字符k或 向上箭头:光标向下移动一个字符l或 向右箭头:光标向右移动一个字符n<Space>:n表示数字,按下数字后再按空格,光标会向右移动这一行的n个字符0或 功能键<Home>:光标移动到本行开头$或 功能键<End>:光标移动到本行末尾G:光标移动到最后一行- :
n或nG:n为数字,光标移动到第n行 gg:光标移动到第一行,相当于1Gn<Enter>:n为数字,光标向下移动n行/word:向光标之下寻找第一个值为word的字符串。?word:向光标之上寻找第一个值为word的字符串。n:重复前一个查找操作N:反向重复前一个查找操作:n1,n2s/word1/word2/g:n1与n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2:1,$s/word1/word2/g:将全文的word1替换为word2:1,$s/word1/word2/gc:将全文的word1替换为word2,且在替换前要求用户确认。v:选中文本d:删除选中的文本dd: 删除当前行y:复制选中的文本yy: 复制当前行p: 将复制的数据在光标的下一行粘贴u:撤销Ctrl + r:取消撤销Shift + >:将选中的文本整体向右移动Shift + <:将选中的文本整体向左移动:w保存:w!强制保存:q退出:q!强制退出:wq保存并退出:set paste设置成粘贴模式,取消代码自动缩进:set nopaste取消粘贴模式,开启代码自动缩进:set nu显示行号:set nonu隐藏行号gg=G:将全文代码格式化Ctrl + q:当vim卡死时,可以取消当前正在执行的命令
相关练习
- 进入
homework_0文件夹,创建文件names.txt,并顺次将下列姓名写入该文件,每个名字占一行。AcWing、yxc、Bob、张强、李明、Alice
shell
cd homework_0
vim names.txt
iAcwing<Enter>yxc<Enter>Bob<Enter>张强<Enter>李明<Enter>Alice
<Esc>
:wq进入
homework_1文件夹,打开problem.txt,并依次删除下列字符:最后一行第
101个字符.第
3行第8个字符第
1行第30个字符第
16行第55个字符第
9行第80个字符最后保存文件并退出。
shell
cd homework_1
vim problem.txt
G101<Space>i<backspace>Esc
3G8<Space>i<backspace>Esc
gg30<Space>i<backspace>Esc
16G55<Space>i<backspace>Esc
9G80<Space>i<backspace>Esc
:wq- 进入
homework_2文件夹,打开problem.txt,并依次执行如下操作: - 在第1个
"two"的后面添加"abc" - 在第2个
"two"的前面添加"def" - 将第3个
"two"后面的连续12个字符删掉 - 将第4个
"two"所在的行删掉 - 最后保存文件并退出。
shell
cd homework_2
vim problem.txt
gg
/two<Enter>
3<Space>iabc<Esc>
nidef<Esc>n
n3<Space>d12<Space>
ndd
:wq进入
homework_3文件夹,打开problem.txt,并依次执行如下操作:将第
5行至第15行中所有of替换成OF。将全文中所有的
the替换成THE。将第偶数个
is替换成IS,第奇数个is不变。下标从1开始。
shell
cd homework_3
vim problem.txt
:5,15s/of/OF/g
:1,$s/the/THE/g
:1,$s/is/IS/gcnynynynynyny...进入
homework_4文件夹,打开problem.txt,并依次执行如下操作:删除第
11行将所删除的行粘贴到文件最后一行的下一行
复制第
5行将所复制的行粘贴到文件当前最后一行的下一行
shell
cd homework_4
vim problem.txt
11GddGp5GyyGp
:wq- 进入homework_5文件夹,打开problem.txt,并依次执行如下操作:
- 删除第11行第15个字符(包含该字符)至第13行第5个字符(包含该字符)
- 将所删除的内容粘贴到文件末尾(注意不要另起一行)
- 复制第5行第88个个字符(包含该字符)至第7行第6个字符(包含该字符)
- 将所复制的内容粘贴到当前文件末尾(注意不要另起一行)
shell
cd homework_5
vim problem.txt
11G14<Space>v13G5<Space>dG$p
5G87<Space>v7G6<Space>yG$p- 进入
homework_6文件夹,并依次执行如下操作: - 清空
source0.cpp - 将
source1.cpp中的第1-3行和第12-24行复制到source0.cpp中
shell
cd homework_5
vim source0.cpp
ggdG:wq
vim source1.cpp
1Gv3G$y:q
vim source0.cpp
p:wq
vim source1.cpp
12Gv24G$y:q
vim source0.cpp
G$i<Right><Enter><Esc>p:wq- 进入
homework_7文件夹,格式化source.cpp
shell
cd homework_7
vim source.cpp
gg=G- 进入
homework_8文件夹,打开source.cpp,并依次执行如下操作: - 将第
15-21行向右缩进2次 - 将第
22-23行向左缩进1次。
shell
cd homework_8
vim source.cpp
15Gv21G>15Gv21G>
22Gv23G<进入homework_9文件夹,打开链接:https://www.acwing.com/activity/content/code/content/1694465/新建文件source.cpp,将链接中的代码抄进source.cpp文件中。
shell
cd homework_9
vim source.cpp
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
<Esc>:wqshell 学习
Linux系统中一般默认使用bash,文件格式为.sh
文件开头需要写#! /bin/bash,指明bash为脚本解释器。
运行方式
shell
$ chmod +x test.sh # 使脚本具有可执行权限
$ ./test.sh # 当前路径下执行
$ bash test.sh # 用解释器执行注释
shell
# 单行注释
:<<{string}
多行注释,string为任意字符串
{string}变量
定义变量
不加空格
power=Gettler
使用变量
大括号加不加均可,起标记边界作用
echo ${power}
只读变量
使用readonly或者declare可以将变量变为只读。
shell
name=yxc
readonly name
declare -r name # 两种写法均可
name=abc # 会报错,因为此时name只读删除变量
unset可以删除变量。
shell
name=yxc
unset name
echo $name # 输出空行变量类型
- 自定义变量(局部变量)子进程不能访问的变量
- 环境变量(全局变量)子进程可以访问的变量
自定义变量改成环境变量:
shell
$ name=yxc # 定义变量
$ export name # 第一种方法
$ declare -x name # 第二种方法环境变量改为自定义变量:
shell
$ export name=yxc # 定义环境变量
$ declare +x name # 改为自定义变量字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号与双引号的区别:
- 单引号中的内容会原样输出,不会执行、不会取变量;
- 双引号中的内容可以执行、可以取变量;
shell
name=yxc # 不用引号
echo 'hello, $name \"hh\"' # 单引号字符串,输出 hello, $name \"hh\"
echo "hello, $name \"hh\"" # 双引号字符串,输出 hello, yxc "hh"获取字符串长度
shell
name="yxc"
echo ${#name} # 输出3提取子串
shell
name="hello, yxc"
echo ${name:0:5} # 提取从0开始的5个字符数组
数组中可以存放多个不同类型的值,只支持一维数组,初始化时不需要指明数组大小。 数组下标从0开始。
定义
数组用小括号表示,元素之间用空格隔开。例如:
shell
array=(1 abc "def" yxc)也可以直接定义数组中某个元素的值:
shell
array[0]=1
array[1]=abc
array[2]="def"
array[3]=yxc读取数组中某个元素的值
格式:
shell
${array[index]}例如:
shell
array=(1 abc "def" yxc)
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
echo ${array[3]}读取整个数组
格式:
shell
${array[@]} # 第一种写法
${array[*]} # 第二种写法例如:
shell
array=(1 abc "def" yxc)
echo ${array[@]} # 第一种写法
echo ${array[*]} # 第二种写法相关练习
- 进入
homework_0文件夹,编写自动完成lesson_1作业的脚本helper.sh。要求: - 当前目录下仅包含
helper.sh helper.sh具有可执行权限- 在任意路径依次执行下列命令后,
lesson_1的作业可以得到满分:
shell
homework 1 create
/home/acs/homework/lesson_3/homework_0/helper.shshell
# echo "helloworld"
# homework_0
dir=/home/acs/homework/lesson_1/homework_
for i in dir_a dir_b dir_c
do
mkdir ${dir}0/$i
done
# homework_1
for i in a b c
do
cp ${dir}1/${i}.txt ${dir}1/${i}.txt.bak
done
# homework_2
for i in a b c
do
mv ${dir}2/${i}.txt ${dir}2/${i}_new.txt
done
# homework_3
for i in a b c
do
mv ${dir}3/dir_a/${i}.txt ${dir}3/dir_b/${i}.txt
done
# homework_4
for i in a b c
do
rm ${dir}4/${i}.txt
done
# homework_5
for i in a b c
do
rm ${dir}5/dir_${i} -r
done
# homework_6
mkdir ${dir}6/dir_a
mv ${dir}6/task.txt "${dir}6/done.txt"
mv "${dir}6/done.txt" "${dir}6/dir_a"
# homework_7
for i in $(seq 0 2)
do
mkdir ${dir}7/dir_${i}
for j in a b c
do
cp ${dir}7/${j}.txt ${dir}7/dir_${i}/${j}${i}.txt
done
done
# homework_8
rm ${dir}8/dir_a/a.txt
mv ${dir}8/dir_b/b.txt ${dir}8/dir_b/b_new.txt
cp ${dir}8/dir_c/c.txt ${dir}8/dir_c/c.txt.bak
# homework_9
rm ${dir}9/*.txt- 进入
homework_1文件夹,编写脚本check_file.sh。要求: - 当前目录下仅包含
check_file.sh。 heck_file.sh具有可执行权限。check_file.sh接收一个传入参数。格式为./check_file.sh file- 判断传递参数,分别在标准输出中输出如下内容(不包括双引号): 1. 如果传入参数个数不是
1,则输出一行:arguments not valid,然后退出,退出状态等于1。 2. 如果file文件不存在,则输出一行:not exist,然后退出,退出状态等于2。 3. 如果file文件存在,则输出分别进行如下5个判断,然后退出,退出状态等于0。- 如果
file为普通文件,则输出一行:regulare file - 如果
file为目录(文件夹),则输出一行:directory - 如果
file具有可读权限,则输出一行:readable - 如果
file具有可写权限,则输出一行:writable - 如果
file具有可执行权限,则输出一行:executable
- 如果
shell
#! /bin/bash
if [ $# -ne 1 ]
then
echo arguments not valid
exit 1
fi
if [ -e "$1" ]
then
if [ -f "$1" ]
then
echo regulare file
fi
if [ -d "$1" ]
then
echo directory
fi
if [ -r "$1" ]
then
echo readable
fi
if [ -w "$1" ]
then
echo writable
fi
if [ -x "$1" ]
then
echo executable
fi
exit 0
else
echo not exist
exit 2
fi进入
homework_2文件夹,编写脚本main.sh。要求:当前目录下仅包含
main.shmain.sh具有可执行权限该文件从
stdin(标准输入)中读取一个整数n在
stdout(标准输出)输出斐波那契数列的第n项。即:a[0] = 1, a[1] = 1, a[i] = a[i - 1] + a[i - 2], 求a[n]。数据保证
0 <= n <= 20,脚本不需要判断n的合法性。
shell
#! /bin/bash
read n
a[0]=1
a[1]=1
for((i=2;i<=n;i++))
do
a[i]=$(expr ${a[i-1]} + ${a[i-2]})
done
echo ${a[n]}- 进入
homework_3文件夹,编写脚本main.sh。要求: - 当前目录下仅包含
main.sh main.sh具有可执行权限- 该文件从
stdin(标准输入)中读取两行整数n和m - 在
stdout(标准输出)中输出1~n的按字典序从小到大的顺序数第m个全排列,输出一行,用空格隔开所有数,行末可以有多余空格。 - 数据保证
1 <= n <= 10, 1 <= m <= min(100, n!),脚本不需要判断数据的合法性。
shell
#! /bin/bash
read n
read m
for ((i = 1; i <= n; i++))
do
st[$i]=0
done
dfs(){
if [ $1 -eq $n ]
then
m=`expr $m - 1`
if [ $m -eq 0 ]
then
echo ${path[@]}
return 0
fi
return 1
fi
local j=0
for((j = 1; j <= n; j++))
do
if [ ${st[$j]} -eq 0 ]
then
path[$1]=$j
st[$j]=1
if dfs `expr $1 + 1`
then
return 0
fi
st[$j]=0
fi
done
return 1
}
dfs 0==if 后边必须加空格!!! ==
- 进入
homework_4文件夹,编写脚本main.sh。要求: - 当前目录下仅包含
main.sh main.sh具有可执行权限main.sh接收两个传入参数。格式为./main.sh input_file output_file- 从
input_file中读取一个正整数n,然后将前n个正整数的平方和写入output_file中 - 数据保证
1 <= n <= 100,脚本不需要判断所有数据的合法性。
shell
#! /bin/bash
input_file=$1
output_file=$2
read n < $input_file
sum=0
for ((i = 1; i <= n; i++))
do
a=`expr $i \* $i`
sum=`expr $sum + $a`
done
echo $sum > $output_filessh 学习
ssh 登录
shell
ssh user@hostname- user: 用户名
- hostname: IP地址或域名
第一次登录时会提示:
shell
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。
然后在文件中输入:
shell
Host myserver1
HostName IP地址或域名
User 用户名
Host myserver2
HostName IP地址或域名
User 用户名之后再使用服务器时,可以直接使用别名myserver1、myserver2。
密钥登录
创建密钥:
ssh-keygen
然后一直回车即可。
执行结束后,~/.ssh/目录下会多两个文件:
- id_rsa:私钥
- id_rsa.pub:公钥
之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。
例如,想免密登录myserver服务器。则将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可。
也可以使用如下命令一键添加公钥:
ssh-copy-id myserver
执行命令
命令格式:
ssh user@hostname command
例如:
ssh user@hostname ls -a
或者
单引号中的$i可以求值
ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
或者
双引号中的$i不可以求值
ssh myserver "for ((i = 0; i < 10; i ++ )) do echo $i; done"
scp 传文件
基本用法
命令格式:
scp source destination
将source路径下的文件复制到destination中
一次复制多个文件:
scp source1 source2 destination
复制文件夹:
scp -r ~/tmp myserver:/home/acs/
将本地家目录中的tmp文件夹复制到myserver服务器中的/home/acs/目录下。
scp -r ~/tmp myserver:homework/ 将本地家目录中的tmp文件夹复制到myserver服务器中的~/homework/目录下。
scp -r myserver:homework .
将myserver服务器中的~/homework/文件夹复制到本地的当前路径下。
指定服务器的端口号:
scp -P 22 source1 source2 destination
注意: scp的-r -P等参数尽量加在source和destination之前。
使用scp配置其他服务器的vim和tmux
scp ~/.vimrc ~/.tmux.conf myserver:
错误记录
若遇到错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:jHBFH8cnZffI74jSvgcGz9QqvgrS7EQTm66p2dixDMA. Please contact your system administrator. Add correct host key in /home/acs/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/acs/.ssh/known_hosts:4 remove with: ssh-keygen -f "/home/acs/.ssh/known_hosts" -R "47.XX.XXX.129" ECDSA host key for 47.XX.XXX.129 has changed and you have requested strict checking. Host key verification failed. lost connection
输入ssh-keygen -f "/home/acs/.ssh/known_hosts" -R "47.XX.XXX.129"即可。