『壹』 sftp創建新賬戶並指定目錄
首先 你的openssh-server版本至少得是4.8p1,因為配置許可權需要版本添加的新配置項ChrootDirectory來完成。 如何查看自己伺服器上的ssh版本?大家可以嘗試以下命令: # ssh -V 步驟: 1. 我們需要創建一個用戶組,專門用於sftp用戶 # groupadd sftpusers ps我里的用戶組是sftpusers 2. 我們創建一個用戶user # useradd -s /bin/false -G sftpusers user ps注意這里我們將user用戶的shell設置為/bin/false使他沒有登陸shell的許可權 # passwd user ps設置user用戶密碼 3. 編輯/etc/ssh/sshd_config 找到Subsystem這個配置項,將其修改為 Subsystem sftp internal-sftp 然後再到文件最尾處增加配置設定屬於用戶組sftpusers的用戶都只能訪問自己的文件夾 Match Group sftpusers X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp ChrootDirectory /data/sftp/%u #需在 /data/sftp/ 創建user文件夾,該文件夾就是登錄的sftp用戶目錄 保存並關閉 4. 修改user用戶所在文件夾的許可權,讓其屬於root用戶 # chown root /data/sftp/user 5. 重啟sshd服務 # service sshd restart 6. 測試用戶賬號 # ssh user@localhost ps連接會被拒絕,證明該用戶沒有ssh shell登錄的許可權 # sftp user@localhost 登陸後你會發現你的賬號無法切換到除自己本身目錄之外的地方;ps或者登錄失敗,看下面可能出現的問題; 問題: 1,如果在鏈接伺服器的時候出現下面的提示: Write failed: Broken pipe Couldn't read packet: Connection reset by peer 這個問題的原因是ChrootDirectory的許可權問題,你設定的目錄必須是root用戶所有,否則就會出現問題。所以請確保sftp用戶根目錄的所有人是root,許可權是750 或者755。 解決:設置user目錄為root許可權,# chown root:user /data/sftp/user #chmod 750 /data/sftp/user 2,Sftp用戶登錄後不能在本目錄操作: 是因為登錄後的目錄是root許可權,需將sftp賬號賦予root許可權,操作方法將 /etc/passwd 文件中對應的sftp的用戶ID修改為0,這樣就可以有許可權操作登錄後的目錄了(還有其他賦予許可權方法,ps另行查找)。Eg:user:x:503:505::/home/darops:/bin/false 將503改為0『貳』 創建文件夾的代碼
你好:
Java端創建的代碼為:
public void mkdir(String mkdirName)
{
try
{
File dirFile = new File(mkdirName);
boolean bFile = dirFile.exists();
if( bFile == true )
{
System.out.println("The folder exists.");
}
else
{
System.out.println("The folder do not exist,now trying to create a one...");
bFile = dirFile.mkdir();
if( bFile == true )
{
System.out.println("Create successfully!");
System.out.println("創建文件夾");
}
else
{
System.out.println("Disable to make the folder,please check the disk is full or not.");
System.out.println(" 文件夾創建失敗,清確認磁碟沒有防寫並且空件足夠");
System.exit(1);
}
}
}
catch(Exception err)
{
System.err.println("ELS - Chart : 文件夾創建發生異常");
err.printStackTrace();
}
}
}
C#端的代碼為:
Directory.CreateDirectory()
1.Directory.CreateDirectory (String) 按 path 的指定創建所有目錄和子目錄。由 .NET Compact Framework 支持。
2. Directory.CreateDirectory (String, DirectorySecurity) 創建指定路徑中的所有目錄,並應用指定的 Windows 安全性。
js代碼為:
<html>
<head>
<title>創建和刪除文件夾</title>
</head>
<body>
<h2>創建和刪除文件夾</h2>
<hr>
<script language="JavaScript">
var strFolder = "c:\\test";
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
// 檢查文件夾是否存在
if (!objFSO.FolderExists(strFolder)){
// 創建文件夾
var strFolderName = objFSO.CreateFolder(strFolder);
document.write("創建文件夾: " + strFolderName + "<br>");
}
// 檢查文件夾是否存在
if (objFSO.FolderExists(strFolder)){
document.write("文件夾: " + strFolder + "存在<br>");
『叄』 如何使用SSH登錄遠程伺服器
默認配置
Windows下有很多SSH工具。在這里我是用的是Putty。如果安裝了Git並配置使用Putty的話,就不需要另外在安裝Putty了。使用SSH連接伺服器的命令如下:
ssh IP地址1
一般來說為了安全性考慮,埠號等一些參數並不會使用默認值。這樣的話命令就變成這樣:
ssh 用戶名@IP地址 -p 埠號1
如果連接成功的話會提示你輸入遠程伺服器的密碼。全部成功之後SSH就會顯示遠程伺服器的提示符,這時候就說明連接成功了。
密鑰登錄
每次登錄SH都需要輸入密碼很麻煩,而且可能不太安全。SSH還能使用另外一種登錄方式,也就是使用密鑰登錄。這種登錄方式需要客戶端生成一堆公鑰私鑰對,然後將公鑰添加到伺服器中,這樣下次就可以直接登錄了。
首先生成SSH密鑰,依照提示輸入信息即可。默認生成在用戶主目錄中的.ssh文件夾中。帶pub的是公鑰,接下來需要添加到伺服器中。
ssh-keygen1
然後將本地公鑰添加到伺服器中,需要使用另一個命令:
scp -P 埠號 本地文件路徑 用戶名@遠程伺服器地址:遠程路徑1
然後登陸伺服器,找到復制進去的公鑰,將公鑰名字改為authorized_keys並添加到對應的.ssh文件夾中。然後退出SSH重新登陸試試,成功的話不需要輸入密碼就會直接進入遠程伺服器。
『肆』 [iOS逆向之路一]SSH登錄iPhone
例: ssh [email protected]
位置在/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd
https://git.sukimashita.com/usbmuxd.git/
選擇1.0.8版本 , 將usbmux.py、tcprelay.py文件放在方便的位置
例: python /Users/mac/Desktop/python-client/tcprelay.py -t 22:10010
或 ssh [email protected] -p 10010
修改密碼啥的見Cydia介紹
ssh 每次登錄都需要輸入密碼令人煩躁
ssh-keygen
終端執行下面命令(如果iphone沒有.ssh文件夾 自己手動創建)
scp -P 10010 ~/.ssh/id_rsa.pub root@localhost:~/.ssh
接著登陸iPhone 執行命令
cat ~/.ssh/id_rsa.pub >> authorized_keys
rm ~/.ssh/id_rsa.pub
退出手機在登錄就不需要密碼了
『伍』 Win10 cmd/PowerShell SSH無法創建目錄 和 SCP 找不到文件
然而.ssh目錄明明就在用戶名文件夾下存在= =
無法找到文件 : No Such File
事實上這個文件存在
cmd和PowerShell 的編碼都是GBK, 講道理是可以用中文的...
但是使用SSH命令顯而易見可以看到中文名被解析成了轉義字元 "323" 之類的.
使用ch找到目錄和文件
然而.ssh目錄明明就在用戶名文件夾下存在= =
無法找到文件 : No Such File
事實上這個文件存在
cmd和PowerShell 的編碼都是GBK, 講道理是可以用中文的...
但是使用SSH命令顯而易見可以看到中文名被解析成了轉義字元 "323" 之類的.
使用chcp 65001換成utf-8也不行
當然也不可能重命名用戶名文件夾..一大堆程序數據都在下面呢= =
之前裝git有裝git bash. 並且git bash 里可以設置中文字元集,因此就試了一下, 發現完全沒有障礙= =
環境什麼的完全沒變, 可以正常找到.ssh目錄 , 可以正常寫入 known_host ,除了在第一次登的時候詢問寫入known_host, 之後免密登錄也可以正常使用.
scp可以正常發送用戶名目錄下的文件, 不會找不到.
果然查遍全網也解決不了的問題是cmd自身的問題= =
使用Putty open登錄主機, 好像不會提示known_host 的事情, 但是可以順利免密登錄.
『陸』 SSH連接Ubuntu Server伺服器的兩種方式
SSH(secure shell)用於遠程和伺服器交互
Ubuntu Server默認安裝了OpenSSH Server,可通過埠22連接
SSH客戶端可以用用戶名密碼的方式連接伺服器,也可以用密鑰對的方式連接伺服器。
可以使用SSH客戶端工具PuTTY,windows10自帶的SSH工具,或者VMWare的SSH工具連接伺服器
1.在命令行用 用戶名和密碼連接
ssh username@serveraddress
2.SSH客戶端還可以用 密碼對 (公鑰和私鑰)連接
這里使用Win10自帶的工具
生成密鑰對
運行命令:ssh-keygen
添加公鑰
打開生成的公鑰文件id_rsa.pub,復制全部內容
使用SSH密碼登錄的方式登錄Ubuntu伺服器,在當前用戶目錄創建文件夾.ssh,進入.ssh文件夾並創建文件authorized_keys,粘貼從公鑰復制的內容並保存文件
修改SSH配置
修改Ubuntu Server的文件:
/etc/ssh/sshd_config
將PubkeyAuthentication yes前面的注釋去掉
運行命令重啟sshd服務
sudo systemctl restart sshd
退出SSH連接,重新用私鑰登錄登錄
ssh <username>@<serveraddress> -i <私鑰路徑>