本文最后更新于 2024-10-31,文章距离上次更新已超30天,内容可能有些老了——

1.ssh登录

ssh user@hostname
  • 其中user为用户名,hostname为ip地址或者域名

  • 可以在.ssh目录下,创建config文件,来简化ssh命令。这样之后就不需要每次输入user和hostname,只需要输入你为服务器名的别名

cd ~/.ssh
vim config

#然后在config文件中,写下:
Host myserver_Name
	HostName IP地址或者域名
	User 用户名
Host myserver_Name2 
	...  #可以写上多个

:wq

ssh myserver_name  #可以利用别名来直接访问上述服务器。
  • 设置免密登录

终端输入ssh-keygen ,创建公钥和私钥 其中id_rsa 为私钥 ,id_rsa.pub为公钥

之后想要免密登录某个服务器,则将公钥的内容,复制到服务器中的

~/.ssh/authorized_keys文件即可

#快捷语句一键添加公钥:
ssh-copy-id myserver_Name
#然后输入一次密码,之后就可以直接免密访问
ssh myserver_Name
  • 执行命令

ssh user@hostname command
例:
ssh user@hostname ls -a #输出该服务器user目录下的文件

#或者
#用单引号括起来,这样可以写长命令,否则可能会受到空格的影响。
ssh myserver_Name 'for ((i=0;i<10;i++)) do echo $i; done'
:<<aaa
注意,这里只有单引号中的$i可以求值。可以理解为,ssh将命令传输到服务器中
用单引号,则将命令原样传入。
而如果使用双引号,在传过去的过程中,就已经被转义
导致服务器接受到的命令变化。不是echo $i ,而是echo '' (i变量的初始值)了
即输出的是10个空符号。
aaa

#上述情况,实际上是将语句完整的传入到服务器中运行
#而如果使用的文件中,需要本地shell传入的变量,则是双引号

ssh myserver_Name mkdir '~'/homework/\\"$1\\"

:<<e
这里前面是单引号,表示要原样传入到服务器中。
否则它会读取的是本地shell的/home/user/,而不是服务器的/home/user/
而后面的$1,读取的是本地传入的参数
如果原样传入到服务器,在服务器端,由于没有参数,会输出为空
所以需要先用" ",读取本地的参数。
e

2.ssh—scp传文件

scp source destination 
#将source 路径下的文件,复制到destination中
#source 可以是多个,但是destination只有一个
scp source1 source2 destination

#复制文件夹,或者是指定端口号,-r -P 都需要写在scp后面,具体路径前面
scp -r ~/tmp myserver_Name:/home/user/
scp -r ~/tmp myserver_Name:homework/  
#如果没有加上前面没有加上/,表示绝对路径的话
#就会默认前面带个~ ,从/home/user/开始
#比如上述第二句的实际路径为/home/user/homework/

scp -r myserver_Name:homework .
#将服务器中/home/user/homework 文件夹复制到本地当前目录(用一个'.'来代替了)

scp -P 22 source1 source2 destination 
#指定服务器端口为22(一般情况下,默认端口值为22)
  • 使用scp配置其他服务器的vim 和 tmux

语句:
scp ~/.vimrc ~/.tmux.conf myserver_Name:
#将本地的配置,传到服务器上
  • 具体配置这部分因为是下载的别人的,就不上传到网站了 :<