SSH基本指令
本文最后更新于 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:
#将本地的配置,传到服务器上
具体配置这部分因为是下载的别人的,就不上传到网站了 :<
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 JikamJMK
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果