可以ping通,但是無法ssh連接 service iptables stop service sshd startsudo ufw statussudo ufw disablesudo ufw allow 22 ssh時permission denied, please try again 找到/ ...
可以ping通,但是無法ssh連接
service iptables stop
service sshd start
sudo ufw status
sudo ufw disable
sudo ufw allow 22
ssh時permission denied, please try again
找到/etc/ssh/sshd_config 中的PermitRootLogin 後的值改為yes
在16中適用,在新版本中並沒用
我創了兩台虛擬機,其中一臺是在較早的時候配置的,裡面幹了啥都忘記了,因為當時的主機名和用戶名都是一樣的,然後嘗試修改主機名和密碼,結果連上了,再創建新的虛擬機時再也沒有碰到過這個問題了。。。。
last -a 把從何處登入系統的主機名稱或ip地址,顯示在最後一行。 -d 指定記錄文件。指定記錄文件。將IP地址轉換成主機名稱。 -f <記錄文件> 指定記錄文件。 -n <顯示列數>或-<顯示列數> 設置列出名單的顯示列數。 -R 不顯示登入系統的主機名稱或IP地址。 -x 顯示系統關機,重新開機,以及執行等級的改變等信息 以下看所有的重啟、關機記錄 last | grep reboot last | grep shutdown history 列出所有的歷史記錄: history 只列出最近10條記錄: history 10 (註,history和10中間有空格) 使用命令記錄號碼執行命令,執行歷史清單中的第99條命令 !99 (!和99中間沒有空格) 重覆執行上一個命令 !! 執行最後一次以rpm開頭的命令(!? ?代表的是字元串,這個String可以隨便輸,Shell會從最後一條歷史命令向前搜索,最先匹配的一條命令將會得到執行。) !rpm 逐屏列出所有的歷史記錄: history | more 立即清空history當前所有歷史命令的記錄 history -c cat, tail 和 watch 系統所有的日誌都在 /var/log 下麵自己看(具體用途可以自己查,附錄列出一些常用的日誌) cat /var/log/syslog 等 cat /var/log/*.log tail -f 如果日誌在更新,如何實時查看 tail -f /var/log/messages 還可以使用 watch -d -n 1 cat /var/log/messages -d表示高亮不同的地方,-n表示多少秒刷新一次。 該指令,不會直接返回命令行,而是實時列印日誌文件中新增加的內容, 這一特性,對於查看日誌是非常有效的。如果想終止輸出,按 Ctrl+C 即可。 除此之外還有more, less ,dmesg|more... linux日誌文件說明 /var/log/message 系統啟動後的信息和錯誤日誌,是Red Hat Linux中最常用的日誌之一 /var/log/secure 與安全相關的日誌信息 /var/log/maillog 與郵件相關的日誌信息 /var/log/cron 與定時任務相關的日誌信息 /var/log/spooler 與UUCP和news設備相關的日誌信息 /var/log/boot.log 守護進程啟動和停止相關的日誌消息 /var/log/wtmp 該日誌文件永久記錄每個用戶登錄、註銷及系統的啟動、停機的事件系統日誌問題
將一個用戶設置為在遠程連接時只執行一段腳本,退出腳本後直接推出連接
在.bashrc最後一行加要執行的腳本文件的絕對路徑 /home/xxx/xxx/xxx/xx.sh logout !!要在用戶目錄中的.bashrc !!該文件不是readonly文件,如果根目錄的bash.bashrc時為readonly文件 !!這兩個都可實現此功能.區別是單個用戶和所有用戶
# 修改readonly文件 :w !sudo tee %
# :q!
linux awk
session_tag=$1 has_process=`ps -ef|grep ssh|grep -v sshpass|grep "$session_tag"|awk '{ print $2 }'` 調用腳本時傳入一個參數用$1 在shell腳本中用此進行賦值 $2為第二列數據 在此為程式id
詳細的介紹自行百度,我用的不多就沒深入看過
strace
在開發堡壘機時用來進行進程的系統調用, 也就是在遠程端的所有操作,並輸出日誌 strace -fp "has_process" -tt -o ./logs/ad/"today"/"session_tag".log 輸出文件未處理 圖片在下方 has_process, session_tag 在上方有提及 today 為 today=`date "+%Y_%m_%d"` shell 中獲取格式化時間 參數在下方介紹 strace - trace system calls and signals usage: strace [-dffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file] [-p pid] ... [-s strsize] [-u username] [-E var=val] ... [command [arg ...]] or: strace -c [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ... [command [arg ...]] 1。 -c -- count time, calls, and errors for each syscall and report summary 為每個系統調用計算時間、調用、錯誤,並報告摘要 2。 -f -- follow forks, -ff -- with output into separate files -f 跟蹤fork的進程;-ff 把輸出定向到獨立的文件 3。 -F -- attempt to follow vforks, -h -- print help message -F 嘗試跟蹤vfork的進程,當今平臺與-f功能相同;-h 列印幫助信息 4。 -i -- print instruction pointer at time of syscall 在系統調用時,列印指令指針 5。 -q -- suppress messages about attaching, detaching, etc. 抑制附加、分離等信息 6。 -r -- print relative timestamp, -t -- absolute timestamp, -tt -- with usecs -r 列印相對時間戳;-t 絕對時間戳;-tt 微秒 7。 -T -- print time spent in each syscall, -V -- print version -T 列印每個系統調用的時間花費;-V 列印版本 8。 -v -- verbose mode: print unabbreviated argv, stat, termio[s], etc. args -v 詳細模式,列印非簡略的參數、狀態、termio[s]等 9。 -x -- print non-ascii strings in hex, -xx -- print all strings in hex -x 列印非ascii的字元串為16進位;-xx 列印所有的字元串為16進位 10。-a column -- alignment COLUMN for printing syscall results (default 40) 對系統調用結果對齊列(預設為40列) 11。-e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]... options: trace, abbrev, verbose, raw, signal, read, or write 在-e後附表達式。一個合格的表達式:選項=[!]所有 或者 選項=[!]值1[,值2]....;可選項:跟蹤、縮寫、冗長、原始的東東、信號、讀、寫。 12 -o file -- send trace output to FILE instead of stderr 發送跟蹤輸出到文件,而不是stderr 13。-O overhead -- set overhead for tracing syscalls to OVERHEAD usecs 設置跟蹤系統調用的最大時間 14。-p pid -- trace process with process id PID, may be repeated 跟蹤值為ID的進程,可以重覆多個哦(註:最多32個) 15。-s strsize -- limit length of print strings to STRSIZE chars (default 32) 限制列印字元串的最大長度,預設為32位元組 16。-S sortby -- sort syscall counts by: time, calls, name, nothing (default time) 排序,以系統調用過程中的時間、或者調用名等作為排序項。 17。-u username -- run command as username handling setuid and/or setgid 以其他用戶名或者組名運行命令 18。-E var=val -- put var=val in the environment for command 設置環境變數 19。-E var -- remove var from the environment for command 清除環境變數 ======================================================== 1。查看CPU運行時間 [guest@localhost tmp]$ strace -c ./b.out % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 42.72 0.000692 87 8 open 38.40 0.000622 622 1 set_thread_area 16.85 0.000273 137 2 munmap 2.04 0.000033 5 7 read 0.00 0.000000 0 8 close 0.00 0.000000 0 1 execve 0.00 0.000000 0 1 access 0.00 0.000000 0 3 brk 0.00 0.000000 0 4 mprotect 0.00 0.000000 0 17 mmap2 0.00 0.000000 0 7 fstat64 ------ ----------- ----------- --------- --------- ---------------- 100.00 0.001620 59 total 2。查看相對運行時間 [guest@localhost tmp]$ strace -r ./b.out 0.000560 mprotect(0xb91000, 8192, PROT_READ) = 0 0.000196 mprotect(0x45c000, 4096, PROT_READ) = 0 0.000884 mprotect(0x42a000, 16384, PROT_READ) = 0 0.000191 mprotect(0xa4a000, 4096, PROT_READ) = 0 0.000144 munmap(0xb7f12000, 45307) = 0 0.000577 brk(0) = 0x8c2b000 0.000171 brk(0x8c4c000) = 0x8c4c000 0.000183 open("sleeper.cpp", O_RDONLY|O_LARGEFILE) = 3 0.000225 read(3, "#include <unistd.h>\n#include <io"..., 8191) = 355 0.000372 read(3, "", 8191) = 0 0.000298 close(3) = 0 0.000192 exit_group(0) = ? 3。查看文件變動相關的信號 [guest@localhost tmp]$ strace -e trace=desc ./b.out open("/etc/ld.so.preload", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0444, st_size=17, ...}) = 0 close(3) = 0 open("/lib/libcwait.so", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\3\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=2572, ...}) = 0 close(3) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=45307, ...}) = 0 close(3) = 0 open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\2348\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=936908, ...}) = 0 close(3) = 0 open("/lib/libm.so.6", O_RDONLY) = 3 4。strace -o output.txt -T -tt -e trace=all -p 28979 上面的含義是 跟蹤28979進程的所有系統調用(-e trace=all),並統計系統調用的花費時間,以及開始時間(並以可視化的時分秒格式顯示),最後將記錄結果存在output.txt文件裡面 5。查看進程是否卡住 strace -p 36699 Process 36699 attached - interruptto quit futex(0x22d8400, FUTEX_WAIT_PRIVATE, 0, NULL # 到這裡沒有任何輸出 一直掛起 6。尋找被程式讀取的配置文件 stracephp 2>&1 | grepphp.ini open("/usr/bin/php.ini", O_RDONLY) = -1 ENOENT (Nosuchfileor directory) open("/etc/php.ini", O_RDONLY) = 3 lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69345, ...}) = 0 7。跟蹤指定的系統調用 strace命令的-e選項僅僅被用來展示特定的系統調用(例如,open,write等等) 讓我們跟蹤一下cat命令的 open 系統調用。 stracecat /tmp/trace.2043925204.012003.xt | head execve("/bin/cat", ["cat", "/tmp/trace.2043925204.012003.xt"], [/* 35 vars */]) = 0 brk(0) = 0x167f000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb7d8991000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Nosuchfileor directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=74047, ...}) = 0 mmap(NULL, 74047, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb7d897e000 close(3) = 0 open("/lib64/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\356\1\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1920936, ...}) = 0 mmap(NULL, 3750152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb7d83df000 mprotect(0x7fb7d8569000, 2097152, PROT_NONE) = 0 mmap(0x7fb7d8769000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x7fb7d8769000 ... 8。 統計概要 它包括系統調用的概要,執行時間,錯誤等等。使用-c選項能夠以一種整潔的方式展示: strace -c ls environments generate githooks hieradata manifests master modules README.md % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 0.00 0.000000 0 10 read 0.00 0.000000 0 1 write 0.00 0.000000 0 12 open 0.00 0.000000 0 14 close 0.00 0.000000 0 12 fstat 0.00 0.000000 0 28 mmapView Code
在sudo apt 時出現E: 無法獲取 dpkg 前端鎖 (/var/lib/dpkg/lock-frontend)或其他進程占用
ps -e|grep apt sudokill 相關進程 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo apt update
普通用戶sudo不要密碼
sudo vim /etc/sudoers
版本問題
pkexec visudo 進行編輯
按提示保存 xxx ALL=(ALL) NOPASSWD:ALL 設置組 %xxx ALL.....同上
-1:強制使用ssh協議版本1; -2:強制使用ssh協議版本2; -4:強制使用IPv4地址; -6:強制使用IPv6地址; -A:開啟認證代理連接轉發功能; -a:關閉認證代理連接轉發功能; -b:使用本機指定地址作為對應連接的源ip地址; -C:請求壓縮所有數據; -F:指定ssh指令的配置文件; -f:後臺執行ssh指令; -g:允許遠程主機連接主機的轉髮端口; -i:指定身份文件; -l:指定連接遠程伺服器登錄用戶名; -N:不執行遠程指令; -o:指定配置選項; -p:指定遠程伺服器上的埠; -q:靜默模式; -X:開啟X11轉發功能; -x:關閉X11轉發功能; -y:開啟信任X11轉發功能。 -D SSH 會建立一個 socket 監聽 ,把數據轉發到目標機器上. -L 命令中的L參數一共接受三個值,分別是"本地埠:目標主機:目標主機埠",它們之間用冒號分隔。這條命令的意思,就是指定SSH綁定本地埠2121,然後指定host3將所有的數據,轉發到目標主機host2的21埠(假定host2運行FTP,預設埠為21) -p 表示指定登錄埠 -N 表示只連接遠程主機,不打開遠程shell -T 表示不為這個連接分配TTY 和上面的 N 參數 一起使用,代表這個SSH連接只用來傳數據,不執行遠程操作。 -f 表示SSH連接成功後,轉入後臺運行,如果想關閉,只能通過 kill 命令去殺掉進程.ssh參數
ssh登錄遠程伺服器時無密碼登錄,因為要使用sshpass設置免密,需要定製上面提到的審計系統,所以要修改sshpass源碼,不能修改系統中原有的sshpass,所以需要下載新的sshpass源碼
百度sshpass下載 tar解壓 解壓參數在Linux中有介紹 sudo apt install zlib1g sudo apt install zlib1g-dev sudo apt install libssl ./configure [--prefix=路徑] make make install
如果permission denied 去掉prefix
sudo make install
參考:https://askubuntu.com/questions/424786/permission-denied-while-running-make-install
sshpass跳過密碼登錄並添加日誌功能
sshpass -p [密碼] [修改後的sshpass源碼路徑abs path 【/home/jcr/Desktop/openssh8/bin/ssh】] 用戶名@IP -o StrictHostKeyChecking=no -Z 傳入的參數
-Z 為源碼中添加的參數
使用subprocess模塊
smartmontools 相關
參考:https://linux.cn/article-4461-2.html