ssh
作用:从某一台服务器登录到另一台服务器,然后在上面进行一些开发.
远程登录服务器
格式:
ssh user@hostname
其中
user
: 用户名
hostname
: 目标服务器的 ip 地址或者域名
然后输入密码就可以登录了
如果想要断开连接的话,可以向其中输入 exit
或者 ctrl+d
具体如下:
第一次登录服务器时,会提示
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,但是如果想要登录其他的端口的话, 可以使用 -p 参数
ssh user@username -p 22
当然,首先要做的是在目标服务器上将端口号修改,然后才可以在这里用新的端口号进行登录
配置别名登录
每次输入这个 user@hostname
太麻烦了
可以在 ~/.ssh/config
文件中配置下服务器的相关信息
具体格式如下:
Host server1
HostName IP地址或域名
User 用户名
Host server2
HostName IP地址或域名
User 用户名
之后,再登录的时候,即可采用别名登录
配置密钥登录
避免每次登录都要输入密码,我们可以配置秘钥登录
1. 创建密钥 ssh-keygen
,输入命令之后一路回车即可
2. 将公钥传递给对应的服务器,具体做法是将公钥id_rsa.pub
中的内容复制到目标服务器的 ~/.ssh/authorized_keys
文件里
这个 authorized_keys
中可以存放多个密钥, 用换行隔开即可
具体如下:
进一步简化
可以使用
ssh-copy-id myserver
一键将公钥给添加到别名为 myserver 中
配置好别名登录和免密登录之后,我们就可以一步登录目标服务器啦
如下:
扩展
自动化运维场景
ssh 后面可以跟一些命令,来获取在目标服务器上执行该命令的结果
格式如下:
ssh user@hostname command
具体如下:
scp
作用: 传文件
scp source destination
将 source
路径下的文件复制到 destination
中,如果有重名文件会将原来的文件给覆盖掉
本地和服务器之间的文件传递是双向的, 也就是说 source
既可以是本地路径,也可以是 server路径
, destination
同理
- 本地路径就是直接写相对路径或者绝对路径都可
server 路径
格式如下:服务器别名或者IP地址 :(冒号隔开) 路径(路径可以是绝对路径,也可以是相对于家目录的相对路径)
eg:
复制单个文件
scp source destination
1. 将本地的 input.txt
文件复制到 myserver1
的 /home/acs_3366
路径下(这里用的是绝对路径)
2. 将本地的 result.txt
文件复制到 myserver1
的家目录下(相对路径是相对于家目录的,所以后面啥都不写就是传到家目录下)
3. 将本地的 result.txt
文件复制到 myserver1
的 /home/acs_3366/test
, 这里采用的是相对路径,所以直接填一个 test
一次性复制多个文件
scp scp source1 source2 destination
将所有文件的路径一次性写下来即可
这里就是将 myserver1
的 /home/acs_3366/test
下的 input.txt
和 result.txt
两个文件给复制到本地的当前路径下(一个点.
表示当前路径)
复制文件夹
加上一个 -r
参数即可,需要注意的是,这个参数需要加在前面
指定端口号
注意这里是 大写的 P,并且这个参数也需要加在前面
scp -P 22 source1 source2 destination
目标服务器与目标服务器之间传文件
用本地做中转站,也就是先把目标服务器1的文件下载到本地,然后再从本地将文件传递给目标服务器2.
当然两个目标服务器之间也可以互相传文件,但是对授权的要求比较高,可能会造成报错
配置服务器的 vim
和 tmux
用 scp 将本地的 两个相关的配置文件给传递到目标服务器对应的家目录下
scp ~/.vimrc ~/.tmux.conf myserver:
复习个小技巧:
如何把 acterminal
中的文件的内容整到本地
1. cat
文件,将文件的内容全部显示出来
2. 在开头点一下
3. 按住 shift
,在结尾再点一下 就做到了内容全选
4. ctrl + insert
复制, shift + insert
粘贴
也可以通过这个技巧把 acterminal中的配置文件内容整出来,保存到本地,然后配置到我们自己的服务器上面去