structure updates

This commit is contained in:
2024-05-01 12:28:44 -06:00
parent a689e58eea
commit aeba9bdb34
461 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
In the intersection of Python and Linux, focusing on harnessing the capabilities of each for a fine-tuned purpose, `Paramiko` stands out as an extremely useful library. Paramiko is a Python implementation of the SSHv2 protocol, providing both client and server functionality. It allows for SSH programming in Python, enabling the execution of commands on remote machines, transferring files, and full SSH session management. Here's a concise reference guide for common use cases with `Paramiko`:
# `Paramiko` Reference Guide
## Installation
```
pip install paramiko
```
## Basic Usage
### Establishing an SSH Connection
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Automatically add host key
ssh.connect('hostname', username='user', password='password') # Connect to the host
```
Replace `'hostname'`, `'user'`, and `'password'` with the actual hostname and credentials.
### Executing Commands Remotely
```python
stdin, stdout, stderr = ssh.exec_command('ls -l')
print(stdout.read().decode())
```
This code executes `ls -l` on the remote machine and prints the output.
### Transferring Files
#### Uploading Files
```python
sftp = ssh.open_sftp()
sftp.put('localfilepath', 'remotefilepath') # Upload file
sftp.close()
```
#### Downloading Files
```python
sftp = ssh.open_sftp()
sftp.get('remotefilepath', 'localfilepath') # Download file
sftp.close()
```
### Handling SSH Keys
```python
key = paramiko.RSAKey.generate(2048) # Generate a new RSA key
private_key = key.write_private_key_file('private_key') # Save the private key
public_key = key.get_base64() # Get the public key
```
SSH keys are more secure and recommended for authentication over passwords.
### Using SSH Keys for Authentication
```python
private_key_path = 'path/to/private/key'
mykey = paramiko.RSAKey(filename=private_key_path)
ssh.connect('hostname', username='user', pkey=mykey)
```
### Starting an SSH Server with Paramiko
Paramiko can also be used to create an SSH server in Python, though this is a more advanced use case and requires setting up server-side components and handling authentication and command execution manually.
## Advanced Usage
### Port Forwarding/SSH Tunneling
Paramiko supports local and remote port forwarding, enabling secure tunneling of network traffic.
### Direct TCP/IP Channel
You can open a direct TCP/IP channel to a remote host, which can be useful for protocols that need a direct connection (e.g., database connections).
### Interactive SSH Sessions
Paramiko allows for more complex interactions with an SSH session, such as those requiring user input, by directly managing stdin, stdout, and stderr streams.
## Security Considerations
- Always validate or manage host keys properly to avoid Man-In-The-Middle (MITM) attacks.
- Prefer using SSH keys over passwords for authentication.
- Keep your Paramiko library up to date to incorporate security patches.
`Paramiko` is an essential tool for automating administrative tasks, data collection, or managing cloud infrastructure across Linux servers from Python. It bridges the capabilities of Python with the secure communication needs of Linux environments, enabling developers and system administrators to automate and manage their systems more effectively.
Paramiko's comprehensive feature set for SSH communication makes it ideal for a wide range of system administration and automation tasks in mixed Python/Linux environments, offering a powerful and flexible way to manage remote systems securely.