Unix/Linux服务器技术分享

Linux服务器干货命令

2019-07-17  本文已影响29人  Nightmare_梦魇兽

不管写得好坏,我也开始尝试记录一下学习的东西,分享给需要的人,直接上代码。

ssh连接服务器

ssh username@address

user是登录账户名称,本人直接是root,如果没有异常之后命令行会询问你登录密码,输入的时候不会有任何的显示,输对即可

scp文件上传代码

scp filepath username@address:path

file是要上传文件的路径,支持相对跟绝对路径,path是要上传到服务器的文件夹绝对路径,下载即交换两个参数位置,即

scp username@address:path filepath

每次登录服务器或者文件传输都需要输入密码,于是我找了两种可以免密交互方法

1.使用密钥

在客户端生成密钥

ssh-keygen -t rsa -P ""

直接回车到命令结束,会在.ssh/下生成id_rsa跟id_rsa.pub两个文件
把id_rsa.pub上传到服务器

scp .ssh/id_rsa.pub root@address:/root

在服务器上将id_rsa.pub文件内容追加到authorized_keys

cd /root
cat id_rsa.pub >> .ssh/authorized_keys

之后这个客户端跟服务器交互就免密了
这里>>表示追加,>就直接把之前的都覆盖了,因为一台服务器可以对多台客户端免密交互,

2.使用expect解释器

先贴代码

#!/usr/bin/expect               
#set timeout 3
spawn ssh root@address
#expect "*password*"                 
send 密码\r                           
interact

首先第一行#!/usr/bin/expect代表linux的shebang(我也不知道为啥叫这个名字🤣),由#!开头,一般是#!/usr/bin/sh或者#!/usr/bin/bash,如果是Python脚本想要直接执行也一样需要#!usr/bin/python,不同的shebang有不同的区别,
其中有几行被我#注释掉了,原因是我的expect是交叉编译的,有点小问题,生效的spawn命令会fork一个子进程去执行command命令,然后在此子进程中执行后面的命令,send即会在上一个命令中执行仿用户的操作,/r代表回车(交叉编译后的expect不需要加引号,具体看脚本报不报错),这里就自动输入的密码然后回车,最后interact命令将操作权转换到主用户,
登录只需要执行这个sh文件,如图:


Linux服务器干货命令

(忽略我密钥权限的问题,不小心改了0777),
这种方式也是我用得多的,欢迎提交意见

上一篇下一篇

猜你喜欢

热点阅读