ssh
ssh
远程登录原理
- 安全,即使被截获也没毛病
远程登录服务器语法
- ssh user@hostname
- user:用户名
- hostname:IP地址或域名
初次登录会提示
- 初次登录会提示
- 登录后服务器的信息会记录在~/.ssh/known_hosts文件夹中
- 然后输入密码即可登录到服务器中
- 默认登录端口为22,如果想要登录某一特定端口,加上 -p 参数
- 假设想要登录23号端口:ssh username@hostname -p 23
配置文件
- 在客户端中(主机,本子)中创建文件 ~/.ssh/config config文件就是用来创建别名机制的
- 在文件中输入
Host myserver1 HostName IP地址或域名 User 用户名 Host myserver2 HostName IP地址或域名 User 用户名
- 之后再使用服务器时,可以直接使用别名myserver1 和 myserver2
免密登录
- 在本地(本子上),ssh-keygen,会在.ssh/文件夹下生成密钥:id_rsa和公钥id_rsa.pub
- 之后想要免密登录哪个服务器,就将本地的公钥传给哪个服务器即可
- 在服务器中的.ssh/路径下创建一个 authorized_keys 文件,然后将本地生成的密钥复制到这个文件中,如果原本就有这个文件,那么只需要在后面加上密钥即可
- 例如,想要免密登录myserver服务器,就将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可
- 也可以使用ssh-copy-id myserver一键添加公钥
- 公钥添加到.ssh/authorized_keys中即可免密登录
- 误区:在服务器上的生成了密钥,传到了服务器本身的authorized_keys或者主机上的,不能自己登自己
- 可以将自己的密钥传递给多个服务器,当服务器很多时,可以实现只需服务器名字登陆
执行命令
为什么
- 当我们需要自动化运维时,需要实现一步:登进去,执行一个命令之后,退出来
- 当有大量服务器时,如果登进去,实现一个命令之后,再退出来就会消耗大量的人力时间
怎么做
命令格式
- 在ssh登录之后直接加上命令
ssh user@hostname command
- 这个命令的执行是在服务器中实现的,结果重定向到本地
- 注意:单引号中的$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传文件
命令格式(可以记成ssh的cp,scp)
- scp source destination
- 将source路径下的文件复制到destination中,先从后到,和cp命令一样
一次复制多个文件
- scp source1 source2 destination
复制文件夹
- scp -r ~/tmp myserver:/home/acs -r放在source和destination的前面
- 服务器和本地的地址都可以作为source或者destination,即既可以将文件从本地传到服务器上,也可以从服务器上传到本地
- 本地文件使用相对路径或绝对路径都可以
- 服务器上的路径:服务器的地址或别名:地址(这个地址可以写绝对路径,也可以写相对于根目录的相对地址,不写的话默认为根目录)
指定服务器的端口号
scp -P source1 source2 destination
- 注意,这个地方的-P是大写的,ssh的-p是小写的
- scp的-r和-P参数尽量加在source和destination之前
服务器之间传
- scp命令不止限于主机和服务器之间传文件,也可以在两台服务器之间传文件,即source和destination都可以为服务器的路径
- 但是必须两台服务器之间的授权非常完整,否则会报错
- 所以可以将一台服务器上的文件传到本地,再由本地传到另一台服务器上
使用scp配置其它服务器的vim和tmux
- vim的配置文件: .vimrc
- tmux的配置文件: .tmux.conf
- 配置vim和tmux只需要将vim和tmux的配置文件传到服务器的根目录下即可
scp .vimrc .tmux.conf myserver:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 h3110w0r1d's Blog!